kubernetes中离线业务编排详解JobCronJob之Job控制器CronJob
CronJob 描述的是定时任务
使用 CronJob 定期运行一个任务(例如每分钟打印一次时间)。
[root@master ~]# kubectl explain cronjob
GROUP: batch
KIND: CronJob
VERSION: v1
....[root@master job]# cat cronjob-task.yml
apiVersion: batch/v1
kind: CronJob
metadata:name: minute-cron
spec:schedule: "* * * * *" # 每分钟执行一次jobTemplate: #定义job模板spec:template:spec:containers:- name: time-echoimage: busyboxcommand: ["sh", "-c", "date && echo 'CronJob executed'"]restartPolicy: OnFailure[root@master job]# kubectl apply -f cronjob-task.yml
cronjob.batch/minute-cron created
CronJob 与 Job 的关系,同 Deployment 与 Pod 的关系一样。
CronJob 是一个专门用来管理 Job 对象的控制器。它创建和删除 Job 的依据,是 schedule 字段定义的、一个标准的Unix Cron格式的表达式。
比如:
*/1 * * * *
分钟、小时、日、月、星期
这个 Cron 表达式里 */1 中的 * 表示从 0 开始,/ 表示"每",1 表示偏移量。所以,它的意思就是:从 0 开始,每 1 个时间单位执行一次。
本例表示从当前开始,每分钟执行一次
这里要执行的内容,就是 jobTemplate 定义的 Job 。
[root@master job]# kubectl get cronjobs
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGE
minute-cron * * * * * <none> False 0 <none> 10s[root@master job]# kubectl get pod
NAME READY STATUS RESTARTS AGE
minute-cron-29103023-mrvpm 0/1 Completed 0 48s[root@master job]# kubectl get pod -w #动态查看,每分钟都会创建一个新的pod
NAME READY STATUS RESTARTS AGE
minute-cron-29103023-mrvpm 0/1 Completed 0 78s
minute-cron-29103024-w5mmg 0/1 ContainerCreating 0 18s
minute-cron-29103024-w5mmg 0/1 Completed 0 23s
minute-cron-29103024-w5mmg 0/1 Completed 0 25s
minute-cron-29103024-w5mmg 0/1 Completed 0 25s
minute-cron-29103024-w5mmg 0/1 Completed 0 26s[root@master job]# kubectl get pod
NAME READY STATUS RESTARTS AGE
minute-cron-29103023-mrvpm 0/1 Completed 0 2m12s
minute-cron-29103024-w5mmg 0/1 Completed 0 72s
minute-cron-29103025-vgfkm 0/1 ContainerCreating 0 12s
查看任务输出
[root@master job]# kubectl logs minute-cron-29103024-w5mmg
Fri May 2 10:24:22 UTC 2025
CronJob executed