5.6.2 CronJob的控制机制
CronJob控制器时一个更高级别的资源,它以Job控制器资源为其管控对象,并借助它管理Pod资源对象。因此,要使用类似如下命令来查看某CronJob控制器创建的Job资源对象,其中的标签“mycronjob-jobs”是在创建cronjob-example时为其指定。不过,只有相关的Job对象被调度执行时,此命令才能将其正常列出。可列出的Job对象的数量取决于CronJob资源的.spec.successfulJobsHistoryLimit
的属性值,默认为3。
**[terminal]
**[delimiter $ ]**[command kubectl get jobs -l app=mycronjob-jobs]
NAME COMPLETIONS DURATION AGE
cronjob-example-1600067520 2/1 of 2 26s 4m36s
cronjob-example-1600067640 2/1 of 2 21s 2m36s
cronjob-example-1600067760 2/1 of 2 21s 36s
如果作业重复执行时指定的时间点较近,而作业执行时长(普遍或偶尔)跨国过了两次执行的时间长度,则会出现两个Job对象同时存在的情形。这些Job对象可能会存在无法或不能同时运行的情况,这个时候就要通过.spec.concurrenctPolicy
属性控制作业并存的机制,其默认值为“Allow”,即允许前后Job,甚至属于同一个CronJob的更多Job同时运行。其他两个可用值中,“Forbid”用于禁用前后两个Job同时运行,如果前一个尚未结束,后一个则不予启动(跳过)。“Replace”用于让后一个Job取代前一个,即终止前一个并启动后一个。