创建CronJob

cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox:1.28
            imagePullPolicy: IfNotPresent
            command:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

本例创建一个每分钟执行一次打印当前时间和 Hello from the Kubernetes cluster 的计划任务。

创建CronJob

$ kubectl create -f cronjob.yaml 
cronjob.batch/hello created

查看相关信息

查看创建的 CronJob:

$ kubectl get cj
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     1        11s             24s

计划任务在执行时会启动一个名字为 CRONJOB_NAME-xxxxx Job 去调度任务,等待 1 分钟可以查看执行的任务(Jobs):

$ kubectl get job
NAME             COMPLETIONS   DURATION   AGE
hello-28351291   1/1           25s        94s
hello-28351292   1/1           4s         34s

CronJob 每次调用任务的时候会创建一个 Job,Job 会创建一个名为 JOB_NAME-xxx Pod 执行命令,成功执行完任务后,Pod 状态就会变成 Completed:

$ kubectl get pod 
NAME                   READY   STATUS      RESTARTS   AGE
hello-28351291-9fv78   0/1     Completed   0          2m34s
hello-28351292-lzwfg   0/1     Completed   0          94s

此时可以通过 logs 查看 Pod 的执行日志:

$ kubectl logs hello-28351292-lzwfg
Mon Nov 27 09:32:01 UTC 2023
Hello from the Kubernetes cluster

如果要删除 CronJob,直接使用 delete 即可:

$ kubectl delete cj hello
cronjob.batch "hello" deleted

$ kubectl get cj
No resources found in default namespace.

最后更新于