k8s术语之job
Job类型
Kubernetes支持以下几种Job:
非并行Job:通常创建一个Pod直至其成功结束
固定结束次数的Job:设置.spec.completions,创建多个 Pod,直到 .spec.completions 个 Pod 成功结束
带有工作队列的并行Job:设置.spec.Parallelism 但不设置 .spec.completions,当所有 Pod 结束并且至少一个成功时,Job 就认为是成功
根据.spec.completions 和 .spec.Parallelism 的设置,可以将 Job 划分为以下几种 pattern:
Job Controller
Job Controller复杂根据Job Spec创建Pod,并持续监控Pod的状态,直至其成功结束。如果失败,则根据restartPolicy(只支持OnFailure和Never,不支持Always)决定是否创建新的Pod是否再次重试任务
Job Spec格式
spec.template 格式同 Pod
RestartPolicy 仅支持 Never 或 OnFailure
单个 Pod 时,默认 Pod 成功运行后 Job 即结束
.spec.completions 标志 Job 结束需要成功运行的 Pod 个数,默认为 1
.spec.parallelism 标志并行运行的 Pod 的个数,默认为 1
spec.activeDeadlineSeconds 标志失败 Pod 的重试最大时间,超过这个时间不会继续重试
运行一次性容器:容器按照持续运行的时间可分为两类
服务类容器
服务器容器通常持续提供服务,需要一直运行,比如http server,daemon等
工作类容器
工作类容器则是一次性任务,比如批处理程序,完成后容器就退出
Kubernetes 的 Deployment、ReplicaSet 和 DaemonSet 都用于管理服务类容器;对于工作类容器,我们用 Job。