文档首页 > > 用户指南> 工作负载> 创建定时任务(CronJob)

创建定时任务(CronJob)

分享
更新时间: 2020/03/02 GMT+08:00

定时任务是按照指定时间周期运行的短任务。使用场景为在某个固定时间点,为所有运行中的节点做时间同步

定时任务是基于时间的Job,就类似于Linux系统的crontab,在指定的时间周期运行指定的Job,即:
  • 在给定时间点只运行一次。
  • 在给定时间点周期性地运行。

CronJob的典型用法如下所示:

  • 在给定的时间点调度 Job 运行。
  • 创建周期性运行的 Job,例如数据库备份、发送邮件。

准备工作

已创建资源,具体操作请参见购买节点(按需计费)。若已有集群节点资源,无需重复操作。

操作步骤

  1. (可选)定时任务需要基于镜像创建,若选择私有镜像,用户首先需要将镜像上传至镜像仓库。

    镜像仓库的使用步骤请参考上传镜像至容器镜像服务

  2. 登录CCE控制台,在左侧导航栏中选择工作负载 > 定时任务 CronJob”,单击“创建定时任务”
  3. 参照表1配置定时任务基本信息,其中带“*”标志的参数为必填参数。

    表1 任务基本信息

    参数

    参数说明

    * 任务名称

    新建任务的名称,命名必须唯一。

    * 容器集群

    新建任务所在的集群。

    * 命名空间

    新建任务所在的命名空间。若不选择,默认配置为default。

    任务描述

    任务描述信息。

  4. 配置完成后,单击“下一步”
  5. 设置定时规则。

    表2 定时规则参数

    参数

    参数说明

    * 并发策略

    支持如下三种模式:

    • Forbid:在前一个任务未完成时,不创建新任务。
    • Allow:定时任务不断新建Job。
    • Replace:已到新任务创建时间点,但前一个任务还未完成,新的任务会取代前一个任务。

    * 定时规则

    指定新建定时任务在何时执行。

    任务记录

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

  6. 单击“下一步”,添加容器。

    1. 单击“选择镜像”,选择需要部署的镜像。
      • 我的镜像:展示了您创建的所有镜像仓库。
      • Dockerhub官方镜像:展示了Dockerhub仓库中的官方镜像。
      • 第三方镜像:CCE支持拉取第三方镜像仓库(即镜像仓库与Dockerhub之外的镜像仓库)的镜像创建任务。使用第三方镜像时,请确保任务运行的节点可访问公网。第三方镜像的具体使用方法请参见如何使用第三方镜像
        • 若您的镜像仓库不需要认证,密钥认证请选择“否”,并输入“镜像地址”,单击“确定”
        • 若您的镜像仓库都必须经过认证(帐号密码)才能访问,您需要先创建密钥再使用第三方镜像,具体操作请参见如何使用第三方镜像
      • 共享镜像:其它租户通过“容器镜像服务”共享给您的镜像将在此处展示,您可以基于共享镜像创建工作负载。
    2. 配置镜像参数。
      表3 添加容器参数说明

      参数

      说明

      镜像

      导入的镜像,您可单击“更换镜像”进行更换。

      * 镜像版本

      若选择Dockerhub官方镜像,请选择需要部署的镜像版本。

      * 容器名称

      容器的名称,可修改。

      容器规格

      申请和限制的含义如下,具体请参见 设置容器规格
      • 申请:表示容器运行所需最少资源。
      • 限制:若担心容器超载,导致系统故障。建议设容器配额的最高限制。确保容器资源不会超额。
      • GPU设置:
        说明:

        当集群中包含GPU节点时,才能设置GPU。

        • GPU配额:勾选申请,并设置百分比,例如设置为10%,表示该容器需使用GPU资源的10%。若不勾选申请,或设置为0,则无法使用GPU资源。
        • GPU显卡:若勾选“不限制”,容器将会随机使用节点中的任一显卡。您也可以勾选某个显卡,容器将使用特定显卡。
    3. (可选)高级设置。
      表4 高级设置

      参数

      参数说明

      生命周

      生命周期脚本定义,主要针对容器类任务的生命周期事件工作负载采取的动作。

      环境变

      在容器中添加环境变量,一般用于通过环境变量设置参数。在 “环境变量”页签,单击 “添加环境变量”。当前支持三种类型。
      • 手动添加:输入变量名称、变量/变量引用。
      • 密钥导入:输入变量名称,选择导入的密钥名称和数据。您需要提前创建密钥,具体请参见创建密钥
      • 配置项导入:输入变量名称,选择导入的配置项名称和数据。您需要提前创建配置项,具体请参见创建配置项
    4. (可选)一个任务实例包含1个或多个相关容器。若您的任务包含多个容器,请单击“添加容器”,再执行添加容器的操作。

  7. 设置完成后,单击“创建”

    待状态为“已启动”,定时任务创建成功。

使用kubectl创建CronJob

CronJob的配置参数如下所示:

  • .spec.schedule指定任务运行时间与周期,格式与Cron相同,例如“0 * * * * ”“@hourly”
  • .spec.jobTemplate指定需要运行的任务,格式与使用kubectl创建Job相同。
  • .spec.startingDeadlineSeconds指定任务开始的截止期限。
  • .spec.concurrencyPolicy指定任务的并发策略,支持Allow、Forbid和Replace三个选项。
    • Allow(默认):允许并发运行 Job。
    • Forbid:禁止并发运行,如果前一个还没有完成,则直接跳过下一个。
    • Replace:取消当前正在运行的 Job,用一个新的来替换。

下面是一个CronJob的示例,保存在cronjob.yaml文件中。

apiVersion: batch/v2alpha1
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
  1. 创建CronJob。

    kubectl create -f cronjob.yaml

    命令行终端显示如下信息:

    cronjob "hello" created

  2. 执行如下命令,查看执行情况。

    kubectl get cronjob

    NAME      SCHEDULE      SUSPEND   ACTIVE    LAST-SCHEDULE
    hello     */1 * * * *   False     0         <none>

    kubectl get jobs

    NAME               DESIRED   SUCCESSFUL   AGE
    hello-1202039034   1         1            49s
    $ pods=$(kubectl get pods --selector=job-name=hello-1202039034 --output=jsonpath={.items..metadata.name} -a)

    kubectl logs $pods

    Mon Aug 29 21:34:09 UTC 2016
    Hello from the Kubernetes cluster

    kubectl delete cronjob hello

    cronjob "hello" deleted

    删除cronjob的时候不会自动删除job,这些job可以用kubectl delete job来删除。

相关操作

定时任务创建完成后,您还可执行表5中操作。

表5 其他操作

操作

操作说明

查看YAML

单击定时任务名称后的“更多 > 查看YAML”,可查看到当前任务对应的YAML文件。

停止定时任务

  1. 选择待停止的任务,单击操作列的“停止”。
  2. 单击“确定”。

删除定时任务

  1. 选择待删除的任务,单击操作列的“更多 > 删除”
  2. 单击“确定”。

    任务删除后将无法恢复,请谨慎操作。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问