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
