ReplicaSet,Deployment和DaemonSet这些控制器都是负责始终运行在后台接受客户端请求并响应的服务进程,而有些进程如备份任务、一次性的计算批处理任务,通常需要使用Job控制器来负责管理。
Job的执行流程
Job可以分为单队列多次执行和多队列并行执行。Job中的Pod运行完毕后会complated,其不会被重新启动起来。
Job资源定义规范
1 2 3 4 5 6 7 8 9 10 11 12 13
| apiVersion: batch/v1 kind: Job metadata: name <string> namespace <string> spec: selector <object> template <object> completions <integer> ttlSecondsAfterFinished <integer> parallelism <integer> backoffLimit <integer> activeDeadlineSeconds <integer>
|
Job单队列示例
1.编写资源清单文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| root@k8s-master01:~/yaml/chapter08 apiVersion: batch/v1 kind: Job metadata: name: job-demo spec: template: spec: containers: - name: myjob image: alpine:3.11 imagePullPolicy: IfNotPresent command: ["/bin/sh","-c","sleep 60"] restartPolicy: Never completions: 2 ttlSecondsAfterFinished: 3600 backoffLimit: 3 activeDeadlineSeconds: 300
|
2.应用配置清单
1 2
| root@k8s-master01:~/yaml/chapter08 job.batch/job-demo created
|
3.对job进行watch
1 2 3 4 5 6 7 8 9
| root@k8s-master01:~/yaml/chapter08 NAME READY STATUS RESTARTS AGE job-demo-fh6qr 1/1 Running 0 5s job-demo-fh6qr 0/1 Completed 0 63s job-demo-wm5b8 0/1 Pending 0 0s job-demo-wm5b8 0/1 Pending 0 0s job-demo-wm5b8 0/1 ContainerCreating 0 0s job-demo-wm5b8 1/1 Running 0 3s job-demo-wm5b8 0/1 Completed 0 64s
|
可以看到job的pod被启动了2次。
Job多对队列示例
1.编写资源清单文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| root@k8s-master01:~/yaml/chapter08 apiVersion: batch/v1 kind: Job metadata: name: job-para-demo spec: template: spec: containers: - name: myjob image: alpine:3.11 imagePullPolicy: IfNotPresent command: ["/bin/sh","-c","sleep 60"] restartPolicy: Never completions: 12 parallelism: 2 ttlSecondsAfterFinished: 3600 backoffLimit: 3 activeDeadlineSeconds: 1200
|
2.应用配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| root@k8s-master01:~/yaml/chapter08 job.batch/job-para-demo created job-para-demo-8p7r8 0/1 ContainerCreating 0 0s job-para-demo-mxvj5 0/1 ContainerCreating 0 0s job-para-demo-8p7r8 1/1 Running 0 5s job-para-demo-mxvj5 1/1 Running 0 5s job-para-demo-8p7r8 0/1 Completed 0 65s job-para-demo-4l9hc 0/1 Pending 0 0s job-para-demo-mxvj5 0/1 Completed 0 65s job-para-demo-4l9hc 0/1 Pending 0 0s job-para-demo-4l9hc 0/1 ContainerCreating 0 0s job-para-demo-mf9wv 0/1 Pending 0 0s job-para-demo-mf9wv 0/1 Pending 0 0s job-para-demo-mf9wv 0/1 ContainerCreating 0 0s job-para-demo-mf9wv 1/1 Running 0 4s job-para-demo-4l9hc 1/1 Running 0 4s job-para-demo-mf9wv 0/1 Completed 0 63s job-para-demo-mx7xq 0/1 Pending 0 0s job-para-demo-mx7xq 0/1 Pending 0 0s job-para-demo-mx7xq 0/1 ContainerCreating 0 1s job-para-demo-4l9hc 0/1 Completed 0 64s job-para-demo-6pbzm 0/1 Pending 0 0s job-para-demo-6pbzm 0/1 Pending 0 0s job-para-demo-6pbzm 0/1 ContainerCreating 0 1s job-para-demo-mx7xq 1/1 Running 0 4s job-para-demo-6pbzm 1/1 Running 0 4s job-para-demo-mx7xq 0/1 Completed 0 64s job-para-demo-nvxwq 0/1 Pending 0 0s job-para-demo-nvxwq 0/1 Pending 0 0s job-para-demo-nvxwq 0/1 ContainerCreating 0 0s job-para-demo-6pbzm 0/1 Completed 0 65s job-para-demo-ld4hk 0/1 Pending 0 0s job-para-demo-ld4hk 0/1 Pending 0 0s job-para-demo-ld4hk 0/1 ContainerCreating 0 0s job-para-demo-nvxwq 1/1 Running 0 4s job-para-demo-ld4hk 1/1 Running 0 3s job-para-demo-nvxwq 0/1 Completed 0 64s job-para-demo-zkmt7 0/1 Pending 0 0s job-para-demo-zkmt7 0/1 Pending 0 0s job-para-demo-zkmt7 0/1 ContainerCreating 0 0s job-para-demo-ld4hk 0/1 Completed 0 64s job-para-demo-hzlr8 0/1 Pending 0 0s job-para-demo-hzlr8 0/1 Pending 0 0s job-para-demo-hzlr8 0/1 ContainerCreating 0 0s job-para-demo-zkmt7 1/1 Running 0 5s job-para-demo-hzlr8 1/1 Running 0 3s job-para-demo-zkmt7 0/1 Completed 0 65s job-para-demo-nq9zj 0/1 Pending 0 0s job-para-demo-nq9zj 0/1 Pending 0 0s job-para-demo-nq9zj 0/1 ContainerCreating 0 0s job-para-demo-hzlr8 0/1 Completed 0 64s job-para-demo-dg9nx 0/1 Pending 0 0s job-para-demo-dg9nx 0/1 Pending 0 0s job-para-demo-dg9nx 0/1 ContainerCreating 0 1s job-para-demo-nq9zj 1/1 Running 0 4s job-para-demo-dg9nx 1/1 Running 0 4s job-para-demo-nq9zj 0/1 Completed 0 64s job-para-demo-dg9nx 0/1 Completed 0 65s
|
并行起了2个pod,每个线程上的pod运行了6次,一共12次