您的位置:首页 > 其它

pod调度之CrontJob:定时任务

2020-07-18 17:50 21 查看

Cron Job 管理基于时间的 Job,即:

  • 在给定时间点只运行一次
  • 周期性地在给定时间点运行

一个 CronJob 对象类似于 crontab (cron table)文件中的一行。它根据指定的预定计划周期性地运行一个 Job。
我们需要掌握Cron Job的定时表达式,它基本上照搬了Linux Cron的表达式,区别是第1位是分钟而不是秒,格式如下:

Minutes Hours DayofMonth Moth DaYofWeek Year

其中每个域都可出现的字符如下:

Minutes:可出现“,”“-”“*”“/”这4个字符,有效范围为0~59的整数。

Hours:可出现“,”“-”“*”“/”这4个字符,有效范围为0~23的整数。

DayofMonth:可出现“,”“-”“*”“/”“?”“L”“W”“C”这8个字符,有效范围为0~31的整数。

Month:可出现“,”“-”“*”“/”这4个字符,有效范围为1~12的整数或JAN~DEC。

DayofWeek:可出现“,”“-”“*”“/”“?”“L”“C”“#”这8个字符,有效范围为1~7的整数或SUN~SAT。1表示星期天,2表示星期一,以此类推。

表达式中的特殊字符“*”与“/”的含义如下。
*:表示匹配该域的任意值,假如在Minutes域使用“*”,则表示每分钟都会触发事件。

/:表示从起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域设置为5/20,则意味着第1次触发在第5min时,接下来每20min触发一次,将在第25min、第45min等时刻分别触发。

编写一个CrontJob 的配置文件。
任务每隔1分钟执行一次,运行的镜像时busybox,执行的命令是shell脚本,脚本执行时会爱控制台输出当前时间和字符串“hello from the kubernetes cluster”

[root@bogon ~]# vim cron.yaml

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 Hello from the Kubernetes cluster
restartPolicy: OnFailure
[root@bogon ~]# kubectl create -f cron.yaml
cronjob.batch/hello created

查看cronjob资源对象

[root@bogon ~]# kubectl get cronjob
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     1        46s             7m51s

直观的了解cron job定期触发任务执行的历史和现状:

[root@bogon ~]# kubectl get cronjob --watch
NAME    SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE
hello   */1 * * * *   False     1        4s              10m
hello   */1 * * * *   False     0        31s             10m
hello   */1 * * * *   False     1        1s              11m
hello   */1 * * * *   False     0        11s             11m

删除cron job

[root@bogon ~]# kubectl delete cronjob hello
cronjob.batch "hello" deleted
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: