38.2. 创建 Cron Job
以下是 CronJob 资源的示例:
apiVersion: batch/v1beta1 kind: CronJob metadata: name: pi spec: schedule: "*/1 * * * *" 1 concurrencyPolicy: "Replace" 2 startingDeadlineSeconds: 200 3 suspend: false 4 successfulJobsHistoryLimit: 3 5 failedJobsHistoryLimit: 1 6 jobTemplate: 7 spec: template: metadata: labels: 8 parent: "cronjobpi" spec: containers: - name: pi image: perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: OnFailure 9
- 1 1
- 作业的 schedule 字段在 cron format 中指定。在本例中,作业会每分钟运行一次。
- 2 2
- 可选:concurrency 策略指定作业控制器如何处理 Cron Job 中的并发作业。只能指定以下策略之一:
-
Allow
允许多个作业实例同时运行。Allow
是默认值。 -
Forbid
会阻止多个作业实例同时运行。如果上一运行没有完成,则会跳过调度运行。 -
Replace
会取消当前运行的作业实例,并使用一个新实例替换当前的作业。
-
- 3 3
- 可选:如果因任何原因而错过调度的运行,则起始截止时间(以秒为单位)。截止时间后,cron 任务不会启动该作业。错过的作业运行计为失败的作业。默认情况下,作业没有期限。请注意,当设置此字段时,cron 作业控制器会统计截止时间和当前时间的值间隔内发生的缺失的作业数量。例如,如果
startDeadlineSeconds
设为200
,则控制器会在最后 200 秒内统计错过的作业数量。如需更多信息,请参阅 Kubernetes 文档中的 cron 任务 概念的限制。 - 4 4
- 可选:suspend 字段用于防止后续运行 cron 作业。如果设置为
true
,则后续所有运行都将阻止启动。默认情况下,值为false
,作业则运行。 - 5
- 可选:成功的作业历史记录限制指定要保留的已完成作业数量。默认情况下,保留三个作业。
- 6
- 可选:失败的作业历史记录限制指定要保留的失败作业数量。默认情况下保留一个作业。
- 7
- 作业模板指定要运行的作业。该字段类似于 作业示例。
- 8
- 可选:labels 字段指定为 cron 作业启动的作业设置的标签。在本例中,作业会接收标签
parent=cronjobpi
。 - 9
有关 CronJob
规格的更多信息,请参阅 Kubernetes 文档 来编写 cron 任务规格。
注意
所有 cron 任务调度
时间均基于启动该作业的 master 的时区。
您还可以使用 oc run
在一个命令中创建并启动 cron 任务。以下命令会创建并启动与上一示例中指定的相同的 cron 任务:
$ oc run pi --image=perl --schedule='*/1 * * * *' \ --restart=OnFailure --labels parent="cronjobpi" \ --command -- perl -Mbignum=bpi -wle 'print bpi(2000)'
使用 oc run
时,--schedule
选项接受采用 cron 格式的调度计划。
注意
在创建 cron 任务时,oc run
仅支持 Never
或 OnFailure
重启策略(--restart
)。
提示
删除您不再需要的 Cron Job:
$ oc delete cronjob/<cron_job_name>
这样可防止生成不必要的工件。