27、k8s-pod的控制器-第六种-CronJob(CJ)-定时执行Job任务(控制job控制器)
概念:CronJob控制器以Job控制器资源为其管控对象、并借助它管理pod资源对象、Job控制器定义的作业任务在其控制器资源创建之后便会立即执行、 但CronJob可以以类似于linux操作系统的周期性任务作业计划的方式控制其运行的 时间点 及 重复运行的方式、也就是说、CronJob可以在特定的时间点(反复的)去运行Job任务
CronJob的资源清单文件:
vim cronjob.yaml --------------------------------------------------------------- apiVersion: batch/v1beta1 kind: CronJob metadata: name: cronjob namespace: dev labels: controller: cronjob spec: schedule: #cronjob格式的作业调度运行时间点、用于控制任务在什么时间执行 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 3;done"] ---------------------------------------------------------------------------------------------- ·schedule: cron的表达式、用于指定任务执行的时间、类似于linux的cron调度任务 ·concurrencyPolicy: ·Allow:允许Jobs并发允许 ·Forbid:禁止并发允许、如果上一次运行尚未完成、则跳过下一次运行 ·Replace:替换、取消当前正在运行的作业并用新的作业替换它
案例:
1、创建cronjob的yaml文件: ---------------------------------------------------------- apiVersion: batch/v1beta1 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"] --------------------------------------------------------------------------------------------------- 2、执行yaml文件创建cronjob并实时观察cronjob、job和pod的情况: ·kubectl create -f pc-cronjob.yaml ·kubectl get cj -ndev -w ·kubectl get job -ndev -w ·kubectl get pod -ndev -w
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/17675202.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步