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
可选:启动运行作业的 pod 的 重启策略。策略可以设置为 AlwaysOnFailureNever。默认情况下,容器总是被重启。请注意,此字段不适用于作业控制器。详情请参阅已知的限制

有关 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 仅支持 NeverOnFailure 重启策略(--restart)。

提示

删除您不再需要的 Cron Job:

$ oc delete cronjob/<cron_job_name>

这样可防止生成不必要的工件。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.