K8s之定时任务

K8s 新类型的 Job,类似 Linux Cron 的定时任务 Cron Job。

在 API Server 的启动进程上增加以下配置参数并重启:

--runtime-config=batch/v2alpha1=true

Cron Job 的定时表达式,基本上照搬了 Linux Cron 的表达式,区别是第 1 位是分钟而不是秒,格式如下:

Minutes Hours DayofMonth Month DayofWeek Year

每一个域可出现的字符如下:

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

  • Hours:可出现 ",-*/" 这 4 个字符,有效范围 0-23 的整数

  • DayofMonth:可出现 ",-*/?LWC" 这 8 个字符,有效范围为 0-31 的整数

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

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

表达式的特殊字符 "*“与”/" 的含义如下:

  • *:表示匹配该域的任意值,假如在 Minutes 域使用 * 则表示每分钟都会触发事件。

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

  • 比如每隔 1min 执行一次任务,则 Cron 表达式如下:*/1 * * * *

编写一个 Cron Job 的配置文件 cron.yaml

apiVersion: batch/v2alpha1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      containers:
      - name: hello
        image: busybox
        args:
        - /bin/sh
        - -c
        - date;echo Hello from the Kubernetes cluster
      restartPolicy: OnFailure

定义了一个名为 hello 的 Cron Job,任务每隔 1min 执行一次,运行的镜像是 busybox,执行的命令是 shell 脚本,脚本执行时会在控制台输出当前时间和字符串 "hello from the kubernetes cluster"

执行 kubectl create 命令完成创建:

kubectl create -f cron.yaml
cronjob "hello" created

每隔 1min 执行 kubectl get cronjob hello 查看任务状态,发现的确是每分钟调度了一次

kubectl get cronjob hello
NAME   SCHEDULE    SUSPEND    ACTIVE   LAST_SCHEDULE
hello  */1 * * * *  False      0

还可以通过查找 Cron Job 对应的容器,验证每隔 1min 产生一个容器的事实,如下所示:

docker ps -a | grep busybox

查看任意一个容器的日志,结果如下

docker logs 83f7b86728ea

运行下面的命令,可以更加直观地了解 Cron Job 定期触发任务执行的历史和现状:

kubectl get jobs --watch
NAME       DESIRED       SUCCESSFUL      AGE
hello-14852  1              1             31m
hello-25930  1              1             30m

查看具体的 Pod 可以通过下面方式:

kubectl get pods --show-all | grep hello-14852

当不需要某个 Cron Job 时,可以通过下面的命令删除

kubectl delete cronjob hello

作者:目标博客专家

来源链接:

https://blog.csdn.net/zhengzaifeidelushang/article/details/122780041

982646bb5f5c5553b0767d5d2fbd1c90.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值