k8s CronJob


前言

  • cronjob其实就是在Job的基础上加上了时间调度,我们可以:在给定的时间点运行一个任务,也可以周期性地在给定时间点运行。这个实际上和Linux中的crontab就非常类似了。
  • 一个cronjob对象其实就对应crontab文件中的一行,它根据配置的时间格式周期性地运行一个Job,格式和crontab也是一样的。

一、CronJob yaml

apiVersion: batch/v1
kind: CronJob
metadata:
 name: hello
spec:
 schedule: "*/1 * * * *" 
 successfulJobsHistoryLimit: 1
 failedJobsHistoryLimit: 1
 startingDeadlineSeconds: 60  ##CronJob 控制器将测量从预期创建作业到现在之间的时间。如果差异高于该限制,它将跳过此执行。 例如,如果设置为200,则它允许在实际计划后最多 200 秒内创建作业。
 jobTemplate:
  spec:
   #ttlSecondsAfterFinished: 30
   template:
    spec:
     containers:
     - name: hello
       image: centos
       imagePullPolicy: IfNotPresent
       command: ["/bin/sh", "-c", " echo "," 123"]
     restartPolicy: OnFailure

二、schedule

*/1 其实就是每分钟

'*/1 * * * *'

分 小时 日 月 周 要运行的命令
#第1列分钟(0~59)
#第2列小时(0~23)
#第3列日(1~31)
#第4列月(1~12)
#第5列星期(0~7)(0和7表示星期天)
#第6列要运行的命令


三、successfulJobsHistoryLimit

  • 保留执行成功的历史记录次数,默认值是3。
  • 假如设置为5,就会保留过去5次成功的执行记录

四、failedJobsHistoryLimit

  • 保留执行失败的历史记录次数,默认值是1。
  • 假如设置为3,就会保留过去3次失败的执行记录

五、startingDeadlineSeconds

它表示任务如果由于某种原因错过了调度时间,开始该任务的截止时间的秒数。
控制器将测量从预期创建作业到现在之间的时间。
如果差异高于该限制,它将跳过此执行。
例如,如果设置为60,则它允许在实际计划后最多60 秒内创建作业。


六、ttlSecondsAfterFinished

假如jobTemplate添加了ttlSecondsAfterFinished,这个时候successfulJobsHistoryLimit和failedJobsHistoryLimit就会失效。

例如ttlSecondsAfterFinished设置成30,这样不管这次的job是成功还是失败,在30秒后会照样清除


总结

上面是我对k8s CronJob使用的一些总结,以后有新的理解会再补充

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐