通过主控实例,您可以像在单集群上一样,使用相同的方式创建定时任务CronJob。主控实例做时间调度,生成任务Job,进而调度到关联集群上运行。本文介绍如何在主控实例中创建定时任务CronJob。

前提条件

  • 开发者用户从ACK One控制台获取主控实例的KubeConfig,通过Kubectl连接至主控实例。

  • 主控实例管理员(实例创建者)已配置命名空间和配额。具体操作,请参见管理命名空间与配额

  • 主控实例已添加多个关联集群。具体操作,请参见添加关联集群
  • 安装AMC命令行工具。具体操作,请参见AMC命令行帮助

背景信息

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

操作步骤

  1. 开发者用户使用以下YAML文件,在主控实例上创建定时任务CronJob。
    示例的命名空间为demo,示例任务名为hello
    apiVersion: batch/v1beta1
    kind: CronJob
    metadata:
      name: hello
      namespace: demo
    spec:
      schedule: "*/1 * * * *"
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox
                imagePullPolicy: IfNotPresent
                command:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure
  2. 等待1分钟后,执行以下命令,获取定时任务CronJob的状态。
    kubectl get cronjob -n demo
    预期输出:
    NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    hello   */1 * * * *   False     1        6s              2m1s
  3. 查看任务Job的状态。
    • 执行以下命令,查看任务的状态。
      kubectl get job -n demo
      预期输出:
      NAME               COMPLETIONS   DURATION   AGE
      hello-1634194320   1/1           1s         75s
      hello-1634194380   1/1           1s         15s
    • 执行以下命令,在主控实例上查看任务的调度结果。
      kubectl get job hello-1634194320 -n demo -o jsonpath='{.metadata.annotations.scheduling\.x-k8s\.io/placement}'
    • 执行以下命令,查看任务相关Pod的运行状态。
      kubectl amc get pod -j job/hello-1634194320 -n demo
      预期输出:
      Run on ManagedCluster managedcluster-c1xxxe5
      NAME                     READY   STATUS      RESTARTS   AGE
      hello-1634194320-dvrgx   0/1     Completed   0          115s
      hello-1634194380-7qjm2   0/1     Completed   0          55s
    • 执行以下命令,查看Pod的运行日志。
      kubectl amc logs hello-1634194320-dvrgx -j job/hello-1634194320 -n demo
      预期输出:
      Run on ManagedCluster managedcluster-c1xxxe5
      Thu Oct 14 06:52:08 UTC 2021
      Hello from the Kubernetes cluster