Cronjob 定时任务

  • Job: 负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
  • CronJob: 则就是在Job上加上了时间调度。

我们用Job这个资源对象来创建一个任务,我们定一个Job来执行一个倒计时的任务,定义YAML文件:

$ cat hello.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
  namespace: test
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: images.xxxxxxxx.com/test/hello:v1
          restartPolicy: OnFailure

创建并查看任务状态

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

$ kubectl get -n test cronjob
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */5 * * * *   False     0        4m15s           39m
#刚创建还没有活跃的工作,也没有计划任何工作

然后,每隔五分钟执行kubectl get cronjob 查看已执行完的任务,发现每五分钟则会创建一个Pod,可以使用以下命令来控制成功Pod和失败Pod个数。

.spec.successfulJobsHistoryLimit: #成功完成的作业保存多少个,默认为3
.spec.failedJobsHistoryLimit:   #失败的作业保存多少个,默认为1

注:实测k8s v1.13.5上有默认值,v1.11.6则不存在

$ kubectl get -n test job
NAME               COMPLETIONS   DURATION   AGE
hello-1567045500   1/1           2s         13m
hello-1567045800   1/1           2s         8m54s
hello-1567046100   1/1           2s         3m54s

如果不需要这个CronJob,删除即可:

$ kubectl delete -f hello.yaml
posted @ 2022-11-08 17:04  打工人,打工魂  阅读(189)  评论(0)    收藏  举报