-
pod控制器之CronJob
CronJob(CJ)介绍
CronJob控制器以Job控制器资源为其管控对象,并借助它管理pod资源对象,Job控制器定义的作业任务在其控制器资源创建之后便会立即执行,但CronJob可以以类似于Linux操作系统的周期性任务作业计划的方式控制其运行时间点及重复运行的方式。也就是说,CronJob可以在特定的时间点(反复地)去运行Job任务
CJ的资源清单文件
apiVersion: batch/v1beta1 kind: CronJob metadata: name: namespace: labels: controller: cronjob spec: schedule: #cron格式的作业调度运行时间点,用于控制任务在什么时间执行 concurrencyPolicy: #并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业 failedJobHistoryLimit: #为失败的任务执行保留的历史记录数,默认为1 successfulJobHistoryLimit: #为成功的任务执行保留的历史记录数,默认为3 startingDeadlineSeconds: #启动作业错误的超时时长 jobTemplate: #job控制器模板,用于为cronjob控制器生成job对象,下面其实就是job的定义 metadata: spec: completions: 1 #指定job需要成功运行pods的次数,默认值为1 parallelism: 1 #指定job在任一时刻应该并发运行pods的数量,默认值为1 activeDeadlineSeconds: 30 #指定job可运行的时间期限,超过时间还未结束,系统将会尝试进行终止 backoffLimit: 6 #指定job失败后进行重试的次数,默认值是6 manualSelector: true #是否可以使用selector选择器选择pod,默认是false selector: #选择器,通过它指定该控制器管理哪些pod matchLabels: #Labels匹配规则 app: counter-pod matchExpressions: #Expression匹配规则 - {key: app, operator: In, values: [counter-pod]} template: #模板,当副本数量不足时,会根据下面的模板创建pod副本 metadata: labels: app: counter-pod spec: restartPolicy: Never #重启策略只能设置为Never或者OnFailure 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 2;done"]
需要重点解释的几个选项: schedule:cron表达式,用于指定任务的执行时间 */1 * * * * <分钟> <小时> <日> <月份> <星期> 分钟值从0到59 小时值从0到23 日值从1到31 月值从1到12 星期值从0到6,0代表星期日 多个时间可以用逗号隔开,范围可以用连字符给出,*可以作为通配符,/表示每。。。 concurrencyPolicy: Allow:允许Jobs并发默认 Forbid:禁止并发运行,如果上一次运行尚未完成,则跳过下一次运行 Replace:替换,取消当前正在运行的作业并用新作业替换它
使用CronJob
创建pc-cronjob.yaml文件
apiVersion: batch/v1beta1 kind: CronJob metadata: name: pc-cronjob namespace: dev labels: controller: cronjob spec: schedule: "*/1 * * * *" #表明每一分钟都会执行这个任务 jobTemplate: #job控制器模板,用于为cronjob控制器生成job对象,下面其实就是job的定义 metadata: spec: template: #模板,当副本数量不足时,会根据下面的模板创建pod副本 spec: restartPolicy: Never #重启策略只能设置为Never或者OnFailure 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"]
新建三个xshell窗口,一个监控cronjob,一个监控pod,一个监控job
在第二个窗口中监控cj
[root@master ~]# kubectl get cj -n dev -w
在第三个窗口中监控pod
[root@master ~]# kubectl get pod -n dev -w
在第四个窗口中监控job
[root@master ~]# kubectl get job -n dev -w
使用配置文件创建cronjob,查看监控窗口的变化
[root@master ~]# kubectl create -f pc-cronjob.yaml
cronjob.batch/pc-cronjob created
cronjob监控窗口
pod监控窗口
job监控窗口
发现每隔一分钟,就会运行一个pod
出处:https://www.cnblogs.com/Ayanamidesu/p/15117736.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式