天天看点

Kubernetes - 4.8 Workload - CronJob

什么是CronJob?

CronJob负责处理周期性的任务,基于时间点触发运行,一般用于备份、数据清理、更新等自动化场景。CronJob也是使用Job对象来执行任务,每一次运行都是会创建一个Job对象,对于CronJob的管理是与Job一样的。

通过Yaml资源定义清单创建CronJob

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *" #执行周期
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo "Hello, World!"
          restartPolicy: OnFailure           

参数说明

.spec.schedule 执行周期,由分、时、日、月、周组成,*代表每个周期都触发。
.spec.concurrencyPolicy 并发策略 
  Allow 允许同时作业。
  Forbid 不允许并发作业,如果开始新作业并且之前的作业未完成,那么将跳过新的作业。
  Replace 如果之前的作业未完成,那么将用当前的作业替换掉之前的作业。
.spec.suspend 如果为true则将后续的作业都挂起,不包括已开始运行的作业。
.spec.successfulJobsHistoryLimit 成功的作业历史记录
.spec.failedJobsHistoryLimit 失败的作业历史记录