kubernetes job控制器用于管理一次性任务。它确保pod中的容器执行完任务后不会重新启动,并将容器状态设为“completed”。如果容器意外终止,job控制器会根据重启策略重新启动pod。遇到node节点故障时,job控制器会通过调度器将pod重新调度到其他节点。job控制器有两种运行模式:单工作队列的串行方式和多工作队列的并行方式。
视频讲解如下:
接下来通过一个具体示例展示如何使用Job控制器的多工作队列并行方式。在创建多工作队列的Job并行方式时,需要指定两个关键参数:
- .spec.parallelism:并行执行的Pod数量,即队列数量。
- .spec.completions:需要完成的总任务数量。
在下面的例子中,总任务数量为5个,创建了3个队列,即并行度为3。整个任务执行需要2分钟。
(1)创建名为“job-demo2.yaml”的文件,并输入以下内容:
apiVersion: batch/v1 kind: Job metadata: name: job-demo2 spec: completions: 5 parallelism: 3 template: spec: containers: - name: job-demo2 image: nginx imagePullPolicy: IfNotPresent # 模拟任务执行60秒 command: ["/bin/bash","-c","sleep 60"] # 重启策略,不进行重启 restartPolicy: Never
(2)执行以下命令创建Job:
kubectl apply -f job-demo2.yaml
(3)查看Job和Pod信息,如下图所示:
kubectl get job,pod # 注意:由于总任务数量为5个,但并行执行的队列数量为3,因此这里只看到Job控制器启动了3个Pod。
(4)等待60秒后,再次查看Job和Pod信息,如下图所示:
kubectl get job,pod # 注意:60秒后,第一批3个任务已完成,Job控制器又启动了2个队列来执行剩余的两个任务。
(5)再等待60秒后,再次查看Job和Pod信息,如下图所示:
kubectl get job,pod # 注意:经过120秒后,5个任务全部成功执行完成。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END