创建定时任务工作负载CronJob

定时任务CronJob用于创建周期性以及重复性的任务,例如执行备份操作或者发送邮件。Job负责批量处理短暂的一次性任务,即仅执行一次的任务,而CronJob则是在Job基础上增加了时间调度。本文介绍如何创建定时任务CronJob。

通过控制台创建CronJob

使用镜像创建CronJob

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID,然后在左侧导航栏,选择工作负载 > 定时任务

  3. 定时任务页面,单击使用镜像创建设置创建CronJob的参数。

    1. 应用基本信息配置向导页面设置应用基本信息。

      配置项

      描述

      应用名称

      设置应用的名称。

      类型

      设置类型定时任务(CronJob)

      标签

      为该应用添加一个标签,标识该应用。

      注解

      为该应用添加一个注解(Annotation)。

      实例类型

      请选择实例类型。

      QoS类型

      选择QoS类型。通用型实例支持QoS类型包括“default”、“best-effort",“default”类型即为“Guaranteed”;性能型仅支持“Guaranteed”的“default”类型。详见算力质量定义

  4. 完成基本信息配置后,单击下一步

  5. 高级配置配置向导页面完成CronJob的高级参数的设置。

    分类

    参数

    描述

    定时任务

    定时规则

    您可以按小时、按天、按星期、按月,或者使用Cron表达式设置定时规则。关于更多Cron表达式说明,请参见Cron Expressions

    并发策略

    您可以设置以下三种并发策略:

    • Allow:允许并发运行任务,会抢占集群资源。

    • Forbid:禁止并发运行,如果前一个任务还没有完成,则直接跳过下一个任务。

    • Replace:已到新任务创建时间点,但前一个任务还未完成,新的任务会取代前一个任务。

    任务记录

    可以设置保留执行成功或执行失败的任务个数,设置为0表示不保留。

    任务设置

    成功运行的Pod数

    设置Pod运行规则。

    并行运行的Pod数

    超时时间

    重试次数

    重启策略

    标签和注解

    Pod标签

    为Pod设置标签的名称和值。

    说明

    标签名称长度为1~253字符,只能包含大小写字母、数字、短划线(-)、下划线(_)和小数点(.)。

    Pod注解

    为Pod设置注解的名称和值。

    说明

    注解名称长度为1~253字符,只能包含大小写字母、数字、短划线(-)、下划线(_)和小数点(.)。

  6. 单击创建

    成功创建定时任务后,在定时任务列表中可以查看新创建的定时任务。

使用YAML创建CronJob

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群ID,然后在左侧导航栏,选择工作负载 > 定时任务

  3. 定时任务页面,单击使用YAML创建资源

  4. 创建页面,在模板区域编辑模板信息。

  5. 单击创建

通过kubectl命令行创建CronJob

在使用kubectl创建CronJob前,您需要先创建集群,并下载kubectl工具,然后使用kubectl命令连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群

创建CronJob涉及的主要参数如下:

参数

描述

.spec.schedule

指定任务运行周期,格式同Cron schedule

.spec.jobTemplate

指定需要运行的任务,格式同Job patterns

.spec.startingDeadlineSeconds

指定任务开始的截止期限。

.spec.concurrencyPolicy

指定任务的并发策略,支持Allow、Forbid和Replace三个选项:

  • Allow:允许并发运行任务,会抢占集群资源。

  • Forbid:禁止并发运行,如果前一个任务还没有完成,则直接跳过下一个任务。

  • Replace:已到新任务创建时间点,但前一个任务还未完成,新的任务会取代前一个任务。

本文以创建一个名为hello的CronJob为例,说明如何使用kubectl创建CronJob。

  1. 保存以下YAML内容至cronjob.yaml文件中。

    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox
                args:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
  2. 执行以下命令创建CronJob。

    kubectl create -f cronjob.yaml

    当输出cronjob.batch/hello created时,则说明成功创建定时任务CronJob。