Kubernetes Pod 控制器 CronJob
Kubernetes About 2,731 words概念
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
Views: 1,465 · Posted: 2022-03-15
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...