k8sJob控制器
Job控制器用于调度pod对象运行一次性任务(批处理脚本),容器中的进程在正常运行结束后不会重启,而是将pod对象置于completed状态,若容器中的进程因错误而终止,会根据配置确定是否重启,而未运行完成的pod对象因其所在的节点故障而意外终止后会被重新调度,Job的本质是确保一个或多个Pod健康地运行直至运行完毕
工作中有的作业肯需要运行多次,用户可以采用串行和并行的方式:
单工作队列的串行式job:以多个一次性的作业方式串行执行多次作业,直至满足期望的次数
多工作队列的并行式job:可以设置工作队列数(作业数),每个队列仅负责运行一个作业
串行job示例
apiVersion:batch/v1
kind: job
metadata:
name: job-example
spec:
template:
spec:
containers:
- name: myjob
image: alpine
command: ["/bin/sh", "-c", "sleep 120"]
restartPolicy: Never
注意:Pod重启策略默认为Always,对于job来说并不适用,需要重新设定Never或OnFailure
并行job示例
apiVersion: batch/v1
kind: job
metadata:
name: job-multi
spec:
completions: 5
简单说即job结束需要成功运行的pod次数
parallelism: 2
简单说即job并行运行的pod数