CronJob说白了就是用来管理Job对象的控制器,
通过jobTemplate管理Job对象,定时执行,最终实现我们的cron功能

示例

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo light weight baby !
          restartPolicy: OnFailure

执行创建,看到

# kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */1 * * * * False 1 13s 7m

再查看job,会发现cronjob创建了几个job对象

# kubectl get job
NAME DESIRED SUCCESSFUL AGE
hello-1571022240 1 1 2m
hello-1571022300 1 1 1m
hello-1571022360 1 1 50s

因为定时任务的特殊性,可能上一个Job没执行完,新的就产生了,可以通过spec.concurrencyPolicy字段来定义处理策略

  • concurrencyPolicy=Allow,默认情况,Job可以同时存在
  • concurrencyPolicy=Forbid,不会创建新的Pod,该创建周期被跳过
  • concurrencyPolicy=Replace,新生产的Job会替换旧的没有执行完的Job

相关文章:

  • 2022-02-03
  • 2022-02-20
  • 2022-12-23
  • 2022-01-26
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2021-12-04
猜你喜欢
  • 2021-12-08
  • 2022-12-23
  • 2021-12-27
  • 2021-12-09
  • 2021-06-29
  • 2022-03-04
  • 2022-12-23
相关资源
相似解决方案