K8s系列之:Cronjob定时任务

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: helloimage: busyboxargs:- /bin/sh- -c- date;echo Hello from the Kubernetes clusterrestartPolicy: 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

K8s系列之:Cronjob定时任务相关推荐

  1. k8s系列(四)——资源对象

    k8s系列四--资源对象 pod概念 思考:为什么k8s会引出pod这个概念,容器不能解决么? 我的理解:一组密切相关的服务使用容器的话,如果他们的镜像不在一个容器里的话,那么就需要配置反向代理进行通 ...

  2. 菜鸟学Kubernetes(K8s)系列——(七)关于Kubernetes底层工作原理

    菜鸟学Kubernetes(K8s)系列--(七)关于Kubernetes底层工作原理 Kubernetes系列文章 主要内容 菜鸟学Kubernetes(K8s)系列--(一)关于Pod和Names ...

  3. vSphere 7 With K8s系列09:部署wordpress示例

    目录 vSphere 7 With K8s系列09:部署wordpress示例 wordpress部署说明 部署前的准备 创建PVC ​部署mysql 部署wordpress 历史文章 vSphere ...

  4. vSphere 7 With K8s系列06:创建命名空间

    vSphere 7 With K8s系列06:创建命名空间 原创 李严省 虚实之路 9月24日 收录于话题 #vSphere with K8s 9个 上一篇文章已经介绍了如何开启vSphere7 wi ...

  5. vSphere 7 With K8s系列07:客户端工具使用

    vSphere 7 With K8s系列07:客户端工具使用 原创 李严省 虚实之路 9月28日 收录于话题 #vSphere with K8s 9个 上一篇文章已经和大家介绍了如何在vSphere7 ...

  6. K8s系列之:网络原理

    K8s系列之:网络原理 一.K8s网络模型 二.Docker的网络模型 三.网络的命名空间 1.网络命名空间的实现 2.网络命名空间的操作 3.网络命名空间的一些技巧 四.Veth设备对 1.Veth ...

  7. K8s系列之:DNS服务搭建指南

    K8s系列之:DNS服务搭建指南 一.skydns配置文件说明 二.修改每台Node上的kubelet启动参数 三.创建skydns RC和Service 四.通过DNS查找Service 五.DNS ...

  8. K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点

    K8s系列之:搭建高可用K8s v1.23.5集群详细步骤,3个master节点,3个Node节点 一.K8s集群节点划分 二.k8s集群环境准备 三.关闭swap 四.关闭ipv6 五.桥接IPv4 ...

  9. k8s 系列之 CoreDNS 解读

    k8s 系列之 CoreDNS CoreDNS工作原理 kuberntes 中的 pod 基于 service 域名解析后,再负载均衡分发到 service 后端的各个 pod 服务中,如果没有 DN ...

最新文章

  1. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
  2. The restricted headers are:
  3. PHP分页代码实例教程
  4. HDFS--Hadoop分布式文件系统
  5. Asp.Net Core部署:早知道,还是docker!以及一点碎碎念
  6. 【51单片机快速入门指南】2.2:任意位/任意长度数码管显示数字、小数
  7. activiti jbpm相关资源
  8. VS发布 错误 未能将文件 复制到
  9. 在Solaris下安装中文语言包
  10. 步进电机驱动技术3:基于ULN2003的步进电机驱动
  11. “我的一剂良药”之开源指北
  12. 模拟人生5显示与服务器,模拟人生5之人生无限
  13. com.android.pngp.tln,杂七杂八的记录
  14. 40岁想在职读计算机博士,年龄超过四十五岁还有机会报考在职博士吗
  15. OA系统是什么,为什么要用OA系统呢?
  16. C++ 泛型编程(五) 模版重载与特例化
  17. 港珠澳大桥介绍网站设计【期末大作业】源码
  18. 硬中断、软中断、中断上半部、中断下半部
  19. 机器学习ml_机器学习简介(ML)
  20. 【My Electronic Notes系列——低频功率放大器】

热门文章

  1. C语言实现strlen
  2. 游戏乐趣(DavidPerry游戏设计白皮书)
  3. linux查看进程的cpu和内存利用率
  4. 计算机硬件巨头,微软和计算机硬件巨头:相亲相爱一家人
  5. ISO/OSI 网络体系结构
  6. 嵌入式面试知识点总结 -- C语言篇
  7. springboot 封装接口返回类
  8. 点趣苹果助手:非苹果独占 口袋妖怪GO将登录安卓手表
  9. pdf转jpg怎么解决?这五个转换方法快速搞定!
  10. 【微信小程序开发】字体样式设置