2025,每天10分钟,跟我学K8S(十七)- CronJob

  CronJob和Job很像,就是在Job的基础上加上了时间调度,在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。这个实际上和我们Linux中的crontab就非常类似了。

        一个CronJob对象其实就对应中crontab文件中的一行,它根据配置的时间格式周期性地运行一个Job,格式和crontab也是一样的。

crontab的格式如下:

分 时 日 月 星期 要运行的命令 

第1列分钟0~59

第2列小时0~23

第3列日1~31

第4列月1~12

第5列星期0~7(0和7表示星期天)

第6列要运行的命令

现在,创建一个CronJob的yaml文件来管理我们上面的Job任务,

apiVersion: batch/v1
kind: CronJob
metadata:
  name: cronjob-test
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
          - name: cronjob-test
            image: m.daocloud.io/docker.io/busybox
            args:
            - "bin/sh"
            - "-c"
            - "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

        这里的KindCronJob了,注意的是.spec.schedule字段是Crontab的必须字段,用来指定任务运行的周期,格式就和liunx中的crontab一样,另外一个字段是.spec.jobTemplate, 用来指定需要运行的任务,格式当然和Job是一致的。

        还有一些值得我们关注的字段.spec.successfulJobsHistoryLimit.spec.failedJobsHistoryLimit,表示历史限制,是可选的字段。它们指定了可以保留多少完成和失败的Job,默认没有限制,所有成功和失败的Job都会被保留。然而,当运行一个Cron Job时,Job可以很快就堆积很多,所以一般推荐设置这两个字段的值。如果设置限制的值为 0,那么相关类型的Job完成后将不会被保留。

接下来我们来创建这个cronjob

# kubectl apply -f crontab.yaml 
cronjob.batch/cronjob-test created

一旦不再需要 Cron Job,简单地可以使用 kubectl 命令删除它:

root@k8s-master:~# kubectl delete -f crontab.yaml 
cronjob.batch "cronjob-test" deleted

如果不进行清楚,这个定时任务会按照设定一直执行下去,下图为例,已经启动了3个job:

        如果想要删除当前 Namespace 中的所有 Job,可以通过命令 kubectl delete jobs --all 立刻删除它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值