Kubernetes的Job对象

Deployment、StatefulSet及DaemonSet三个主要用来进行长时间业务,不会退出。
而有一些离线业务,或者叫Batch Job(计算业务),计算完成后就直接退出 了,若是用Deployment来管理这种业务,Pod会在计算结束后退出,而后被Deployment Controller不断地重启,
而咱们的任务不须要一直被执行,Job对象主要就是针对这种离线跑任务场景ubuntu

示例api

apiVersion: batch/v1
kind: Job
metadata:
  name: pi
spec:
  parallelism: 2
  completions: 4
  template:
    spec:
      containers:
      - name: pi
        image: resouer/ubuntu-bc 
        command: ["sh", "-c", "echo 'scale=10000; 4*a(1)' | bc -l "]
      restartPolicy: Never
      activeDeadlineSeconds: 100
  backoffLimit: 4

参数解释:并发

  • restartPolicy:为Never,由于咱们的Pod永远不该该被重启.restartPolicy在Job对象里只容许被指定为Never和OnFailure,而在Deployment对象里,restartPolicy只容许被设置为Alway
  • backoffLimit: 做业失败后Job从新建立Pod的次数(若是restartPolicy指定为OnFailure,做业失败,不会尝试建立新的Pod)
  • activeDeadlineSeconds:最长运行的时间
  • parallelism: 同一时间最多能够启动Pod数量
  • completions: 至少要完成的Pod数量
    简单的说,能够经过设置parallelism控制并发数,经过completions控制任务执行的次数,经过activeDeadlineSeconds设置一个任务的最长运行时间

执行建立app

kubectl apply -f job.yaml

建立后会看到po状态,由ContainerCreating->Running->Completed,若是有失败状况还会出现DeadlineExceeded状态rest

参考资料:https://www.kubernetes.org.cn/jobcode

相关文章
相关标签/搜索