c语言sscanf函数的用法是什么
302
2022-09-11
k8s源码学习-client-go创建job任务
在kube-system命名空间下创建job: test-job,job执行ls -l命令:
测试环境:Mac+minikube
源码参考: github源码地址
package mainimport ( "flag" "golang.org/x/net/context" batchv1 "k8s.io/api/batch/v1" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" "log" "os" "path/filepath" "strings")//定义连接k8s集群的函数func connectToK8s() *kubernetes.Clientset { home,exists := os.LookupEnv("HOME") if !exists { home = "/root" } configPath := filepath.Join(home,".kube","config") config,err := clientcmd.BuildConfigFromFlags("",configPath) if err != nil{ log.Fatalln("failed to create K8s config") } clientset,err := kubernetes.NewForConfig(config) if err != nil{ log.Fatalln("Failed to create K8s clientset") } return clientset}//定义k8s job模板func launchK8sJob(clientset *kubernetes.Clientset,jobName *string,image *string,cmd *string){ jobs := clientset.BatchV1().Jobs("kube-system") var backOffLimit int32 = 0 jobSpec := &batchv1.Job{ ObjectMeta: metav1.ObjectMeta{ Name: *jobName, Namespace: "kube-system", }, Spec: batchv1.JobSpec{ Template: v1.PodTemplateSpec{ Spec: v1.PodSpec{ Containers: []v1.Container{ { Name: *jobName, Image: *image, Command: strings.Split(*cmd, " "), }, }, // //Pod 的 spec 中包含一个 restartPolicy 字段,其可能取值包括 Always、OnFailure 和 Never。默认值是 Always。 //restartPolicy 适用于 Pod 中的所有容器。restartPolicy 仅针对同一节点上 kubelet 的容器重启动作。当 Pod 中的容器退出时,kubelet 会按指数回退 方式计算重启的延迟(10s、20s、40s、...),其最长延迟为 5 分钟。 一旦某容器执行了 10 分钟并且没有出现问题,kubelet 对该容器的重启回退计时器执行 重置操作。 RestartPolicy: v1.RestartPolicyNever, }, }, //Specifies the number of retries before marking this job failed. Defaults to 6 +optional //指定标记此任务失败之前的重试次数为0次,创建失败就不再创建。默认值为6 BackoffLimit: &backOffLimit, }, } _,err := jobs.Create(context.TODO(),jobSpec,metav1.CreateOptions{}) if err != nil{ log.Fatalln("Failed to create K8s job") } //print job details log.Printf("Create K8s job successfully")}//定义主函数并使用flag包实现命令行的传参func main(){ jobName := flag.String("jobname","test-job","请输入job的名字") containerImage := flag.String("image","ubuntu:latest","请输入镜像名") entryCommand := flag.String("command","ls -l","请输入命令") flag.Parse() clientset := connectToK8s() launchK8sJob(clientset,jobName,containerImage,entryCommand)}
使用默认参数执行:
✗ go run main.go2022/04/08 17:42:05 Create K8s job successfully➜ ~ kubectl get job -n kube-systemNAME COMPLETIONS DURATION AGEtest-job 0/1 12s 12s➜ ~ kubectl get pod -n kube-system | grep test-jobtest-job-h6z6c 0/1 Completed 0 8m53s➜ ~ kubectl logs -f test-job-h6z6c -n kube-systemtotal 48lrwxrwxrwx 1 root root 7 Apr 5 04:59 bin -> usr/bindrwxr-xr-x 2 root root 4096 Apr 15 2020 bootdrwxr-xr-x 5 root root 360 Apr 8 09:45 devdrwxr-xr-x 1 root root 4096 Apr 8 09:45 etcdrwxr-xr-x 2 root root 4096 Apr 15 2020 homelrwxrwxrwx 1 root root 7 Apr 5 04:59 lib -> usr/liblrwxrwxrwx 1 root root 9 Apr 5 04:59 lib32 -> usr/lib32lrwxrwxrwx 1 root root 9 Apr 5 04:59 lib64 -> usr/lib64lrwxrwxrwx 1 root root 10 Apr 5 04:59 libx32 -> usr/libx32drwxr-xr-x 2 root root 4096 Apr 5 04:59 mediadrwxr-xr-x 2 root root 4096 Apr 5 04:59 mntdrwxr-xr-x 2 root root 4096 Apr 5 04:59 optdr-xr-xr-x 265 root root 0 Apr 8 09:45 procdrwx------ 2 root root 4096 Apr 5 05:02 rootdrwxr-xr-x 1 root root 4096 Apr 8 09:45 runlrwxrwxrwx 1 root root 8 Apr 5 04:59 sbin -> usr/sbindrwxr-xr-x 2 root root 4096 Apr 5 04:59 srvdr-xr-xr-x 12 root root 0 Apr 8 09:42 sysdrwxrwxrwt 2 root root 4096 Apr 5 05:02 tmpdrwxr-xr-x 13 root root 4096 Apr 5 04:59 usrdrwxr-xr-x 11 root root 4096 Apr 5 05:02 var
指定参数创建job
➜ client-go-create-job-command git:(master) ✗ go run main.go -command "ls -l home" -jobname "create-job-test"2022/04/08 19:58:59 Create K8s job successfully➜ ~ kubectl get job -n kube-systemNAME COMPLETIONS DURATION AGEcreate-job-test 1/1 8s 2m50s➜ ~ kubectl get pod -n kube-systemNAME READY STATUS RESTARTS AGEcoredns-64897985d-jq6tk 1/1 Running 1 (30d ago) 30dcreate-job-test-lrm7z 0/1 Completed 0 12s➜ ~ kubectl logs -f create-job-test-lrm7z -n kube-systemtotal 0
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~