Job一次性任务控制器,任务完成后状态为Completed。

单工作列队:多个一次性任务串行作业。

多工作列队:多个一次性任务并行运行。

必要字段:template。

API组:batch/v1


创建


创建job:

kubectl create job job-example --image=busybox --dry-run -o yaml

spec.restartPolicy 默认为 Always 要手动定义为Never。

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

查看:

kubectl get jobs job-example
kubectl get pods -l job-name=job-example
kubectl describe jobs job-example
kubectl get pods -A


并行式Job


spec.parallelism     并行度,同时运行的Pod数

spec.backoffLimit  任务失败重试次数,默认6

spec.completions  总任务数

apiVersion: batch/v1
kind: Job
metadata:
  name: job-multi
spec:
  completions: 5
  parallelism: 2
  template:
    spec:
      containers:
      - name: job-multi
        image: busybox
        command: ["/bin/sh","-c","sleep 20"]
      restartPolicy: OnFailure


扩容


扩容:修改同时运行的Pod数 parallelism。使用 scale 命令。

kubectl scale jobs job-multi --replicas=2


删除


删除job:

kubectl delete jobs job-multi

有些任务可能无法终止,可使用下面两个属性:

spec.backoffLimit: 5  失败重试次数

spec.activeDeadlineSeconds: 100    超出一百秒未运行完成将其终止