研发工程师玩转Kubernetes——定时任务

定时任务是指可以制定周期的任务,比如每周二0点1分执行一次。在《研发工程师玩转Kubernetes——非定时任务》中,我们介绍了单次执行的任务。现在我们只要对其清单稍作修改,就可以实现定时任务。

# wrk_cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: wrk-cronjob
spec:
  schedule: "0/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: wrk
            image: localhost:32000/wrk:v1
            command: ["wrk", "-t20", "-c20",  "-d30", "http://192.168.137.248:30000"]
          restartPolicy: Never

和单次任务清单相比,主要的修改点是:新增了spec.schedule字段。它用于描述周期。
在这里插入图片描述
可以见得,我们可以控制的最短周期是分钟。
在表达式中,*表示”所有”。比如:

  • *****表示:每分钟、每小时、每天、每月和每周的每天,直白点说就是每分钟执行一次。
  • 1**** 表示每月每天每小时的1分钟时执行一次。
  • 1 22 30 5 *表示每年的5月30日22时1分执行一次。
  • 1 22 * * 2表示每个星期2的22时1分执行一次。
    除了指定时间执行,还可以指定周期。即用/表示切分周期。比如:
  • */2 * * * *表示每两分钟执行一次。

我们还可以使用https://crontab.guru/来查看表达式的表意。
比如例子中的*/1 * * * *表达的是每一分钟执行一次。
我们使用下面指令创建cronjob。

 kubectl create -f wrk_cronjob.yaml

cronjob.batch/wrk-cronjob created

可以看到每隔一分钟,我们创建了一个Job;每个Job也创建了一个Pod
在这里插入图片描述
在这里插入图片描述
如果没有dashboard,可以使用命令查看。

kubectl get jobs.batch --watch
NAME                   COMPLETIONS   DURATION   AGE
wrk-cronjob-28090472   1/1           33s        3m21s
wrk-cronjob-28090473   1/1           33s        2m21s
kubectl get pod --watch
NAME                                      READY   STATUS      RESTARTS   AGE
simple-http-deployment-58dd5b649b-4p429   1/1     Running     0          5d13h
simple-http-deployment-58dd5b649b-pcnw9   1/1     Running     0          5d13h
wrk-cronjob-28090472-8snlv                0/1     Completed   0          39s
wrk-cronjob-28090473-ptbgg                0/1     Pending     0          0s
wrk-cronjob-28090473-ptbgg                0/1     Pending     0          0s
wrk-cronjob-28090473-ptbgg                0/1     ContainerCreating   0          0s
wrk-cronjob-28090473-ptbgg                0/1     ContainerCreating   0          0s
wrk-cronjob-28090473-ptbgg                1/1     Running             0          1s
wrk-cronjob-28090473-ptbgg                0/1     Completed           0          31s
wrk-cronjob-28090473-ptbgg                0/1     Completed           0          32s
wrk-cronjob-28090473-ptbgg                0/1     Completed           0          33s
wrk-cronjob-28090473-ptbgg                0/1     Completed           0          33s

如果我们希望CronJob创建的Job和Pod在执行结束后自动删除,可以给
spec.jobTemplate.spec.ttlSecondsAfterFinished设定一个值,例子如下:

# wrk_cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: wrk-cronjob
spec:
  schedule: "0/1 * * * *"
  jobTemplate:
    spec:
      ttlSecondsAfterFinished: 0
      template:
        spec:
          containers:
          - name: wrk
            image: localhost:32000/wrk:v1
            command: ["wrk", "-t20", "-c20",  "-d30", "http://192.168.137.248:30000"]
          restartPolicy: Never

我们可以通过下面指令删除CronJob,这样它创建的Job和Pod都会被删除。

kubectl delete cronjobs.batch wrk-cronjob 

cronjob.batch “wrk-cronjob” deleted

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

breaksoftware

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值