前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研发工程师玩转Kubernetes——定时任务

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

作者头像
方亮
发布2023-05-31 14:39:48
3840
发布2023-05-31 14:39:48
举报
文章被收录于专栏:方亮

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

代码语言:javascript
复制
# 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。

代码语言:javascript
复制
 kubectl create -f wrk_cronjob.yaml

cronjob.batch/wrk-cronjob created

可以看到每隔一分钟,我们创建了一个Job;每个Job也创建了一个Pod

如果没有dashboard,可以使用命令查看。

代码语言:javascript
复制
kubectl get jobs.batch --watch
代码语言:javascript
复制
NAME                   COMPLETIONS   DURATION   AGE
wrk-cronjob-28090472   1/1           33s        3m21s
wrk-cronjob-28090473   1/1           33s        2m21s
代码语言:javascript
复制
kubectl get pod --watch
代码语言:javascript
复制
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设定一个值,例子如下:

代码语言:javascript
复制
# 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都会被删除。

代码语言:javascript
复制
kubectl delete cronjobs.batch wrk-cronjob 

cronjob.batch “wrk-cronjob” deleted

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档