Kubernetes Pod 控制器 CronJob
Kubernetes 评论 1 大约 2731 字概念
CronJob
控制器以Job
控制器资源为其管控对象,并借助它管理Pod
资源对象
特点
CronJob
可以以类似于Linux
操作系统的周期性任务作业计划的方式控制其运行时间点及重复运行的方式。
CronJob可以在特定的时间点(反复的)去运行job任务。
查看帮助
kubectl explain CronJob
完整配置
apiVersion: batch/v1beta1 # 版本号
kind: CronJob # 类型
metadata: # 元数据
name: # CronJob 名称
namespace: # 所属命名空间
labels: # 标签
controller: cronjob
spec: # 详情描述
schedule: # cron 格式的作业调度运行时间点,用于控制任务在什么时间执行
concurrencyPolicy: # 并发执行策略,用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业
failedJobHistoryLimit: # 为失败的任务执行保留的历史记录数,默认为 1
successfulJobHistoryLimit: # 为成功的任务执行保留的历史记录数,默认为 3
startingDeadlineSeconds: # 启动作业错误的超时时长
jobTemplate: # job 控制器模板,用于为 CronJob 控制器生成 job 对象;下面其实就是 job 的定义
metadata:
spec:
completions: 1
parallelism: 1
activeDeadlineSeconds: 30
backoffLimit: 6
manualSelector: true
selector:
matchLabels:
app: counter-pod
matchExpressions: 规则
- {key: app, operator: In, values: [counter-pod]}
template:
metadata:
labels:
app: counter-pod
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 20;done"]
需要重点解释的几个选项:
schedule
:cron
表达式,用于指定任务的执行时间
*/1 * * * *
<分钟> <小时> <日> <月份> <星期>
分钟 值从 0 到 59.
小时 值从 0 到 23.
日 值从 1 到 31.
月 值从 1 到 12.
星期 值从 0 到 6, 0 代表星期日
多个时间可以用逗号隔开,范围可以用连字符给出;* 可以作为通配符,/ 表示每...
concurrencyPolicy
:
Allow
:允许Jobs
并发运行(默认)Forbid
:禁止并发运行,如果上一次运行尚未完成,则跳过下一次运行Replace
:替换,取消当前正在运行的作业并用新作业替换它
示例 yml
apiVersion: batch/v1
kind: CronJob
metadata:
name: pc-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
kubectl get cronjobs -n dev
输出:
[root@localhost ~]# kubectl get cronjobs -n dev
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
pc-cronjob */1 * * * * False 1 4s 12s
查看 Job
kubectl get jobs -n dev
输出:
NAME COMPLETIONS DURATION AGE
pc-cronjob-27396626 1/1 29s 39s
查看 Pod
kubectl get pods -n dev
输出:
[root@localhost ~]# kubectl get pods -n dev
NAME READY STATUS RESTARTS AGE
pc-cronjob-27396626-pzktx 0/1 Completed 0 96s
pc-cronjob-27396627-fktdr 0/1 Completed 0 36s
删除 CronJob
kubectl delete -f pc-cronjob.yml
阅读 911 · 发布于 2022-03-15
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
-
fHLvlxbf 1楼
e
Chrome | Windows 10 2023-07-24
随便看看
换一批
-
Git 提示 You asked me to pull without telling me which branch you...阅读 4879
-
IDEA 中使用 Lombok 报找不到 get/set 错误的方法解决方法阅读 3853
-
Elasticsearch 插入数据 PUT阅读 2951
-
Java 并发编程之 Phaser阅读 2693
-
Spring Boot JPA 开启审计字段自动注入阅读 510
-
MySQL 条件查询阅读 1152
-
OpenLens 6.3.0 无法查案日志和进入 Pod Shell 解决方法阅读 1047
-
Android 不允许用户清理数据阅读 2014
-
软考-系统架构设计师:数据库设计过程阅读 1883
-
Spring Boot 使用 JavaMailSender 发送邮件阅读 3028