常見的yaml寫法-CronJob
- 2021 年 11 月 13 日
- 筆記
- k8s, Kubernetes
CronJob其實就是在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列要運行的命令
apiVersion: batch/v2alpha1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: busybox
args:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"
我們這裡的Kind是CronJob了,要注意的是.spec.schedule欄位是必須填寫的,用來指定任務運行的周期,格式就和crontab一樣,另外一個欄位是.spec.jobTemplate, 用來指定需要運行的任務,格式當然和Job是一致的。還有一些值得我們關注的欄位.spec.successfulJobsHistoryLimit和.spec.failedJobsHistoryLimit,表示歷史限制,是可選的欄位。它們指定了可以保留多少完成和失敗的Job,默認沒有限制,所有成功和失敗的Job都會被保留。然而,當運行一個Cron Job時,Job可以很快就堆積很多,所以一般推薦設置這兩個欄位的值。如果設置限制的值為 0,那麼相關類型的Job完成後將不會被保留。