Job控制器

Job控制器用于调配Pod运行一次性任务,容器中的进程在正常结束之后将Pod对象置于“Completed”状态。若容器中的进程因错误终止,则需要依据配置确定重启与否。未运行完成的对象因节点故障而终止时会被重新调度。
实际使用中有的作业让我可能需要运行不止一次,可以配置他们以串行和并行的方式运行。总结起来一共有两种,具体如下:

  • 单工作队列的串行式Job:多个一次性的作业串行执行多次作业,直到满足期望的次数。
  • 多工作队列的并行式Job:可以设置多个工作队列,每个队列均负责运行一个作业。
    Job常用于管理那些运行一段时间便可完成的任务,如计算或备份操作。

创建Job对象

Job控制器的必要字段只有template,其位于API群组“batch/v1”之中。Job会为其Pod对象自动添加“job-name=JOB_NAME”和“controller-uid=UID”标签,并使用标签选择器完成对controller-uid标签的关联。下面是一个示例:

apiVersion: batch/v1
kind: Job
metadata:
  name: job-example
spec:
  template:
    spec:
      containers:
      - name: myjob
        image: alpine
        command: ["/bin/sh", "-c", "sleep 20"]
      restartPolicy: Never

注意:Pod模版中的spec.restartPolicy默认为Always,这并不适用于Job,需要手动指定为Never或OnFailure

创建完成之后即可使用kubectl getkubectl describe查看资源状态。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!