5.6.1 创建CronJob对象
CronJob控制器的spec字段可以嵌套使用以下字段。
jobTemplate <Object>
:Job控制器模板,用于CronJob控制器生成Job对象;必选字段。schedule <string>
:Cron格式的作业调度运行时间点;必选字段。concurrencyPolicy <string>
:并法执行策略,可用值有“Allow”(允许)、“Forbid”(禁止)和“Replace”(替换),用于定义前一次作业运行尚未完成时是否以及如何运行后一次作业。failedJobHistoryLimit <integer>
:为失败的任务执行保留的历史记录数,默认为1。successfulJobsHistoryLimit <integer>
:为成功的任务执行保留的历史记录数,默认为3。startingDeadlineSeconds <integer>
:因各种原因缺乏执行作业的时间点所导致的启动作业错误的超时时长,会被记入错误历史记录。suspend <boolean>
:是否挂起后续的任务执行,默认为false,对运行中的作业不会产生影响。
下面是一个定义在资源清单文件(cronjob-example.yaml)中的CronJob资源对象示例,它每隔2分钟运行一次由jobTemplate定义的简单任务:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-example
labels:
app: mycronjob
spec:
schedule: "*/2 * * * *"
jobTemplate:
metadata:
labels:
app: mycronjob-jobs
spec:
parallelism: 2
template:
spec:
containers:
- name: myjob
image: alpine
command:
- /bin/sh
- -c
- date; echo Hello from the kubernetes cluster; sleep 10
restartPolicy: OnFailure
运行资源创建命令创建上述CronJob资源对象,而后再通过资源对象的相关信息了解运行命令。下面创建结果中的SCHEDULE是指其调度的时间点,SUSPEND表示后续任务是否处于挂起状态,即暂停任务的调度和运行,ACTIVE表示活动状态的Job对象的数量,而LAST SCHEDULE则表示上次调度运行至此刻的时长:
**[terminal]
**[delimiter $ ]**[command kubectl get cronjobs.batch cronjob-example]
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
cronjob-example */2 * * * * False 0 <none> 23s
自 Kubernetes 1.8 起,CronJob资源所在的API资源组从 batch/v2alphal 移至 batch/v1beta1 中,并且查看其资源格式时也要使用 --api-version 选项指定其所在的资源组,即“kubectl explain cronjob --api-version='batch/v1beta1'”。