Cron JOb 的定时表达式,基本上照搬了 Linux Cron 的表达式,格式如下:
Miniute Hours DayofMonth Month DayofWeek
其中每个域都可以出现的字符如下:
- Minutes:可出现“,” “-” “*” “/” 这 4 个字符,有效范围为 0~59 的整数
- Hours:可出现“,” “-” “*” “/” 这 4 个字符,有效范围为 0~23 的整数
- DayofMonth:可出现“,” “-” “*” “/” “?” “L” “W” “C” 这 8 个字符有效范围为 1~31 的整数
- Month:可出现 “,” “-” “*” “/” 这 4 个字符,有效范围为 1~12 的整数或 JAN-DEC。
- DayofWeek:可出现 “,” “-” “*” “/” “?” “L” “C” “#” 这 8 个字符,有效范围为 1~7 的整数或 SUN~SAT。1 表示星期天,2 表示星期一,依次类推。
表达式中的特殊字符“*”与“/”的含义如下。
- :表示匹配该域的任意值,加入在 Minutes 域使用 “”,则表示每分钟都会触发事件
- /:表示从起始时间开始触发,然后每隔固定时间触发一次,例如在 Minutes 域设置为 5/20,则意味着第一次触发在第 5min 时,接下来每 20min 触发一次,将在第 25min,第 45min等时刻分别触发。
比如,我们要每隔 1min 执行一次任务,则 Cron 表达式如下:
*/1 * * * *
一、编辑 Cron Job 的配置文件
[root@k8s0 test_cornjob]# cat >cron.yaml<<EOF apiVersion: batch/v1 kind: CronJob metadata: name: hello spec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox:1.28 imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello QiJing from the kubernetes cluster restartPolicy: OnFailure EOF
二、执行 Cron Job
[root@k8s0 test_cornjob]# kubectl create -f cron.yaml cronjob.batch/hello created
三、验证
可以看到,在“任务”面板确实每分钟都有一个任务在执行。