测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Kubernetes----CronJob控制器
收藏本文
作者:redrose2100 类别: 日期:2022-05-23 14:12:19 阅读:974 次 消耗积分:0 分
# 一、CronJob控制器简介 ## 1.1 CronJob控制器简介 CronJob控制器以Job控制器为其管控对象,并借助它管理pod资源对象,job控制器定义的作业任务在其控制器资源创建后便会立即执行,但CrobJob可以以类似与Linux操作系统的周期性任务作业的方式控制其运行时间点及重复运行的方式,也就是说,CronJob可以在特定的时间点反复的去运行Job任务 ![](/static/upload/20220523_141214.png) ## 1.2 CronJob控制器的资源清单文件: ```yaml apiVersion: batch/v1betal # 版本号 kind: CronJob # 类型 metadata: # 元数据 name: # rs名称 namespace: # 所属的命名空间 labels: # 标签 controller: cronjob spec: # 详情描述 schedule: # cron格式的作业调度运行时间点,用于控制任务在什么时候执行 concurrencyPolicy: # 并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次作业 failedJobhistoryLimit: # 为失败的任务执行保留的历史记录数,默认为1 successulJobHistoryLimit: # 为成功的任务执行保留的历史记录数,默认为3 startingDeadlineSeconds: # 启动作业错误的超时时长 jobTemplate: # job控制器模板,用于为cronjob控制器生成job对象,下面其实就是job的定义 metadata: # 元数据 name: # rs名称 namespae: # 所属命名空间 labels: # 标签 controller: job spec: # 详情描述 completions: 1 # 指定Job需要成功运行Pod的次数,默认值为1 parallelism: 1 # 指定Job在同一时刻应该并发运行Pod的数量,默认值为1 activeDeadlineSeconds: 30 # 指定Job可运行的时间期限,超过时间还为结束,系统将会尝试进行终止 backoffLimit: 6 # 指定Job失败后进行重试的次数,默认值为6 manualSelector: true # 是否可以使用selector选择器选择pod,默认是false selector: # 选择器,通过它指定该控制器管理哪些Pod matchLabels: # Label匹配规则 app: controller-pod matchExpressions: # Expressions匹配项 - {key: app, operator: In, values: [controller-pod]} template: # 模板,当副本数量不足时,会根据下面的模板创建pod副本 metadata: labels: app: controller-pod spec: restartPolicy: Never # 重启策略只能设置为Never或者OnFailure containers: - name: counter - image: nginx:1.17.1 ``` 其中schedule: cron表达式,用于指定任务的执行时间,格式如下: ```bash */1 * * * * <分钟> <小时> <日> <月> <星期> 其中: 分钟 0-59 小时 0-23 日 1-31 月 1-12 星期 0-6,0代表星期日 多个时间可以用逗号隔开,范围可以用连字符给出,*可以作为通配符,/表示每... ``` concurrencyPolicy: ```bash Allow: 允许Job并发运行(默认) Forbid: 禁止并发运行,如果上一次运行尚未完成,则跳过下一次运行 Replace: 替换,取消当前正在运行的作业并用新的作业替换它 ``` # 二、CronJob控制器实例 编写 pc_cronjob.yaml,内容如下:设置每分钟执行一次 ```yaml apiVersion: v1 kind: Namespace metadata: name: dev --- apiVersion: batch/v1beta1 kind: CronJob metadata: name: cronjob namespace: dev labels: controller: cronjob spec: schedule: "*/1 * * * *" jobTemplate: metadata: spec: template: spec: restartPolicy: Never containers: - name: counter image: busybox:1.30 command: ["/bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1; do echo $i;sleep 3;done"] ``` 然后开启两个窗口,分别使用如下命令监视cronjob和job ```bash # 监视cronjob的命令 kubectl get cronjob -n dev -o wide -w # 监视job的命令 kubectl get job -n dev -o wide -w ``` 然后使用如下命令创建资源 ```bash [root@master pod_controller]# kubectl apply -f pc_cronjob.yaml namespace/dev unchanged Warning: batch/v1beta1 CronJob is deprecated in v1.21+, unavailable in v1.25+; use batch/v1 CronJob cronjob.batch/cronjob created ``` cronjob监视如下: ```bash [root@master ~]# kubectl get cronjob -n dev -o wide -w NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE CONTAINERS IMAGES SELECTOR cronjob */1 * * * * False 0
0s counter busybox:1.30
cronjob */1 * * * * False 1 0s 9s counter busybox:1.30
cronjob */1 * * * * False 0 28s 37s counter busybox:1.30
cronjob */1 * * * * False 1 0s 69s counter busybox:1.30
cronjob */1 * * * * False 0 27s 96s counter busybox:1.30
cronjob */1 * * * * False 1 0s 2m9s counter busybox:1.30
cronjob */1 * * * * False 0 28s 2m37s counter busybox:1.30
``` job监视如下: ```bash [root@master ~]# kubectl get job -n dev -o wide -w NAME COMPLETIONS DURATION AGE CONTAINERS IMAGES SELECTOR pc-job 6/6 57s 89m counter busybox:1.30 app=counter-pod cronjob-27479099 0/1 0s counter busybox:1.30 controller-uid=797c9040-7783-40db-97ad-25efe7911b6c cronjob-27479099 0/1 0s 0s counter busybox:1.30 controller-uid=797c9040-7783-40db-97ad-25efe7911b6c cronjob-27479099 1/1 28s 28s counter busybox:1.30 controller-uid=797c9040-7783-40db-97ad-25efe7911b6c cronjob-27479100 0/1 0s counter busybox:1.30 controller-uid=a1fd22df-e51c-47a4-aa33-38fee96ccc7c cronjob-27479100 0/1 0s 0s counter busybox:1.30 controller-uid=a1fd22df-e51c-47a4-aa33-38fee96ccc7c cronjob-27479100 1/1 27s 27s counter busybox:1.30 controller-uid=a1fd22df-e51c-47a4-aa33-38fee96ccc7c cronjob-27479101 0/1 0s counter busybox:1.30 controller-uid=0ca1f4a8-9dd6-4eb4-8e0c-92b70ef1a894 cronjob-27479101 0/1 0s 0s counter busybox:1.30 controller-uid=0ca1f4a8-9dd6-4eb4-8e0c-92b70ef1a894 cronjob-27479101 1/1 28s 28s counter busybox:1.30 controller-uid=0ca1f4a8-9dd6-4eb4-8e0c-92b70ef1a894 ``` 通过上述对cronjob和job的监视窗口可以看出,此时确实每隔一分钟在执行一次任务
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/278
上一篇:
Kubernetes----Job控制器
下一篇:
Kubernetes----服务Service简介
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件