spec.template格式同Pod
RestartPolicy仅支持Never或OnFailure
单个Pod时默认Pod成功运行后Job即结束
.spec.completions 标志Job结束需要成功运行的Pod个数,默认为1
.spec.parallelism标志并运行的Pod的个数,默认为1
.spec.activeDeadlineSeconds标志失败Pod的重试最大时间,超过这个时间不会继续重试
.spec.schedule:调度,必需字段,指定任务运行周期,格式同Cron
.spec.jobTemplate:Job模板,必需字段,指定需要运行的任务,格式同Cron
.spec.startingDeadlineSeconds:启动Job的期限(秒级别),该字段是可选的,如果因为任何原因而错过被调度的时间,那么错误执行时间的Job将被认为是失败的,如果没有指定,则没有期限
.spec.suspend:挂起,该字段也是可选的,如果设置为true,后续所有执行都会被挂起,它对已经开始执行的Job不起作用,默认值为false
.spec.successfulJobsHistoryLimit和.spec.failedJobsHistoryLimit:历史限制,是可选的字段,它们指定了可以保留多少完成和失败的Job,默认情况下,它们分别设置为3和1,设置限制值为0,相关类型的Job完成后将不会被保留。
.spec.concurrencyPolicy:并发策略,该字段也是可选的,它指定了如何处理被CronJob创建的Job的并发执行,只允许指定下面的策略中的一种:
Allow(默认):允许并发运行Job
Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个
Replace:取消当前正在运行的Job,用一个新的来替换
注意:当前策略只能应用于同一个CronJob创建的Job,如果存在多个CronJob,他们创建的Job之间总是并发运行
CronJob管理基于时间的Job,即:
1. 在给定时间点只运行一次
2. 周期性的在给定时间点运行
当前使用的kubernetes的集群,版本>=1.8,(对CronJob)
在给定的时间点调度Job运行
创建周期性运行的Job,例如:数据库备份,发送邮件
[root@k8s-master ~]# vim cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
spec:
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
imagePullPolicy: IfNotPresent
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
schedule: "*/1 * * * *"
[root@k8s-master ~]# kubectl apply -f cronjob.yaml
cronjob.batch/hello created
[root@k8s-master ~]# kubectl get job
NAME COMPLETIONS DURATION AGE
hello-1606808040 1/1 2s 81s
hello-1606808100 1/1 2s 21s
[root@k8s-master ~]# kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 0 35s 101s
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-1606808040-njjsj 0/1 Completed 0 94s
hello-1606808100-qvk9l 0/1 Completed 0 34s
[root@k8s-master ~]# kubectl logs hello-1606808040-njjsj
Tue Dec 1 07:34:07 UTC 2020
Hello from the Kubernetes cluster
[root@k8s-master ~]# kubectl logs hello-1606808100-qvk9l
Tue Dec 1 07:35:07 UTC 2020
Hello from the Kubernetes cluster
kubectl delete cronjob hello
创建Job操作应该是幂等的