pod调度之CrontJob:定时任务

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

猜你喜欢

转载自blog.csdn.net/zhangshaohuas/article/details/107431393