K8s计划任务CronJob&Job
一、Job可以干什么
Job 控制器用于管理 Pod 对象运行一次性任务,比方说我们对数据库备份,可以直接在 k8s 上启动一个 mysqldump 备份程序,也可以启动一个 pod,这个 pod 专门用来备份用的,备份结束 pod 就可以终止了,不需要重启,而是将 Pod 对象置于"Completed"(完成)状态,若容器中的进程因错误而终止,则需要按照重启策略配置确定是否重启,对于 Job 这个类型的控制器来说,需不需要重建 pod 就看任务是否完成,完成就不需要重建,没有完成就需要重建 pod。
二、Job配置参数详解
编辑yaml文件
apiVersion: batch/v1
kind: Job
metadata:
labels:
job-name: echo
name: echo
namespace: default
spec:
#suspend: true # 1.21+ #暂停任务,只有支持为false才执行
#ttlSecondsAfterFinished: 100
backoffLimit: 4 #失败多少次不再执行,例如执行4次失败后不再执行
completions: 1
parallelism: 1
template:
spec:
containers:
- command:
- echo
- Hello, Job
image: registry.cn-beijing.aliyuncs.com/dotbalo/busybox
imagePullPolicy: IfNotPresent
name: echo
resources: {
}
restartPolicy: Never
➢ backoffLimit: 如果任务执行失败,失败多少次后不再执行
➢ completions:有多少个Pod执行成功,认为任务是成功的。例如:如果并发执行3,设置为2,则有2个成功就任务成功了。
- 为空默认和parallelism数值一样
➢ parallelism:并行执行任务的数量
- 如果parallelism数值大于未完成任务数,只会创建未完成的数量;比如completions是4,并发是3,第一次会创建3个Pod执行任务,第二次只会创建一个Pod执行任务。
➢ ttlSecondsAfterFinished:Job在执行结束之后(状态为completed或Failed)自动清理。设置为0表示执行结束立即删除,不设置则不会清除,需要开启TTLAfterFinished特性,一般不开启。
执行pod
[root@k8s-master01 job]#kubectl create -f job.yaml
job.batch/echo created
[root@k8s-master01 job]