3.5 控制器之CronJob
文章目录1、CronJob实例2、CronJob属性参数上一篇文章演示了Job的用法,Job建立后会立即运行,批处理了任务或定时任务需要在指定的时间运行或指定的间隔时间运行。k8s提供的CronJob就支持批处理场景,就像Linux中的CronTab命令,可以指定时间运行任务。CronJob运行时,通过创建Job资源的任务,然后通过Job创建并管理pod处理定时任务。1、CronJob实例下面以每
·
上一篇文章演示了Job的用法,Job建立后会立即运行,批处理了任务或定时任务需要在指定的时间运行或指定的间隔时间运行。k8s提供的CronJob就支持批处理场景,就像Linux中的CronTab命令,可以指定时间运行任务。
CronJob运行时,通过创建Job资源的任务,然后通过Job创建并管理pod处理定时任务。
1、CronJob实例
下面以每1分钟运行一次任务为例。yaml文件如下
apiVersion: batch/v1beta1
kind: CronJob #控制器类型
metadata: #CronJob元数据
name: mycronjob #CronJob的名字
spec: #CronJob的描述
suspend: false #打开定时任务
schedule: "*/1 * * * *" #执行计划
jobTemplate: #CronJob创建的Job模板
spec: #Job的描述
template: #Job创建Pod的模板
metadata: #Pod元数据
labels: #Pod的标签
app: mypod
spec: #Pod的描述
restartPolicy: OnFailure #Pod的重启策略
containers: #Pod中容器定义
- name: busybox #容器的名字
image: busybox #容器中的镜像
imagePullPolicy: IfNotPresent #镜像策略
command: ["/bin/sh", "-c", "sleep 30"] #容器中执行的命令
创建并查看CronJob
#创建CronJob
[root@k8s-master01 cron_work]# kubectl apply -f cronjob.yaml
cronjob.batch/mycronjob created
#查询CronJob
[root@k8s-master01 cron_work]# kubectl get cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
mycronjob */1 * * * * False 0 <none> 9s
#查询Job,时间未到,没有创建Job
[root@k8s-master01 cron_work]# kubectl get job
No resources found.
#时间到后,查询CronJob创建的Job, COMPLETIONS显示1个Pod未执行完毕
[root@k8s-master01 cron_work]# kubectl get job
NAME COMPLETIONS DURATION AGE
mycronjob-1593966600 0/1 3s 3s
#查询Pod,显示一个Pod正在运行
[root@k8s-master01 cron_work]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mycronjob-1593966600-tvp5m 1/1 Running 0 12s
#pod中任务运行完毕后,显示完成状态,不会再重启
[root@k8s-master01 cron_work]# kubectl get pod
NAME READY STATUS RESTARTS AGE
mycronjob-1593966600-tvp5m 0/1 Completed 0 38s
#等上面Job结束后,1分钟后又会创建下一个Job继续,Job创建Pod继续执行任务,一直循环下去,最后会有很多完成状态的Job和Pod
2、CronJob属性参数
以下面yaml为例
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: mycronjob
spec:
startingDeadlineSeconds: 60 #执行job的期限,指定时间内没完成的Job会置失败状态
concurrencyPolicy: Allow #设定Job可以并发
failedJobsHistoryLimit: 3
successfulJobsHistoryLimit: 3
suspend: false
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app: myjob
spec:
restartPolicy: OnFailure
containers:
- name: busybox
image: busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c", "sleep 30"]
以下参数都是可选参数:
- startingDeadlineSeconds : 启动job的时间限制,如果超过这个时间,job还没有启动,则直接标志失败;
- concurrencyPolicy :Job被CronJob调度时如何执行
Allow(默认) :允许并发运行Job,比如一个Job还没执行完,CronJob又启动了Job,则多个Job并行运行;
Forbid :禁止Job并发运行,如果前一个还没完成,则直接跳过下一个;
Replace :取消当前正在运行的Job,启动新的Job来代替; - suspend :如果为true,后续所有的Job执行都会被挂起,对已经开始执行的Job不起作用;
- successfulJobsHistoryLimit 、failedJobsHistoryLimit:指定可以保留多少完成和失败的Job,默认情况下分别设置为3和1。
更多推荐
已为社区贡献11条内容
所有评论(0)