【赵渝强老师】Job控制器多工作队列的并行方式

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。

【赵渝强老师】Job控制器多工作队列的并行方式

(4)等待60秒后,再次查看Job和Pod信息,如下图所示:

kubectl get job,pod # 注意:60秒后,第一批3个任务已完成,Job控制器又启动了2个队列来执行剩余的两个任务。

【赵渝强老师】Job控制器多工作队列的并行方式

(5)再等待60秒后,再次查看Job和Pod信息,如下图所示:

kubectl get job,pod # 注意:经过120秒后,5个任务全部成功执行完成。

【赵渝强老师】Job控制器多工作队列的并行方式

【赵渝强老师】Job控制器多工作队列的并行方式

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享