4.2.3. 创建 cron job

您可以通过创建作业对象在 OpenShift Container Platform 中创建 Cron Job。

流程

创建 Cron Job:

  1. 创建一个类似以下示例的 YAML 文件:

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: pi
    spec:
      schedule: "*/1 * * * *"  1
      concurrencyPolicy: "Replace" 2
      startingDeadlineSeconds: 200 3
      suspend: true            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
    cron 格式指定的作业调度计划。在本例中,作业将每分钟运行一次。
    2
    可选的并发策略,指定如何对待 Cron Job 中的并发作业。只能指定以下并发策略之一。若未指定,默认为允许并发执行。
    • Allow,允许 Cron Job 并发运行。
    • Forbid,禁止并发运行。如果上一运行尚未结束,则跳过下一运行。
    • Replace,取消当前运行的作业并替换为新作业。
    3
    可选期限(秒为单位),如果作业因任何原因而错过预定时间,则在此期限内启动作业。错过的作业执行计为失败的作业。若不指定,则没有期限。
    4
    可选标志,允许挂起 Cron Job。若设为 true,则会挂起所有后续执行。
    5
    要保留的成功完成作业数(默认为 3)。
    6
    要保留的失败完成作业数(默认为 1)。
    7
    作业模板。类似于作业示例。
    8
    为此 Cron Job 生成的作业设置一个标签。
    9
    pod 的重启策略。这不适用于作业控制器。
    注意

    .spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit 字段是可选的。用于指定应保留的已完成作业和已失败作业的数量。默认情况下,分别设置为 31。如果将限制设定为 0,则对应种类的作业完成后不予保留。

  2. 创建 cron job:

    $ oc create -f <file-name>.yaml
注意

您还可以使用 oc create cronjob,在一个命令中创建并启动 Cron Job。以下命令会创建并启动与上一示例中指定的相似的 Cron Job:

$ oc create cronjob pi --image=perl --schedule='*/1 * * * *' -- perl -Mbignum=bpi -wle 'print bpi(2000)'

使用 oc create cronjob 时,--schedule 选项接受采用 cron 格式的调度计划。