学习 Kubernetes(六):CronJob

CronJob 是 Kubernetes 用于运行定时任务的资源。

Cron 表达式

在 CronJob 中,Cron 表达式表示什么时候,Job 表示做什么

Cron 表达式,包含了 5 个必填字段和 1 个选填字段,字段间使用空格分隔。

Cron 表达式字段说明:

字段 是否必填 值域
分钟 0-59
小时 0-23
1-31
1-12 或 JAN–DEC
星期 0–6 或 SUN–SAT
1970–2099

符号说明:

星号 * 表示所有时间段;

逗号 , 分隔多个时间段,例如:MON,WED,FRI

连字符 - 表示时间范围,例如:2018-2019

斜线 / 表示频率,例如:对于分钟,0/2 表示零分起始每两分钟;

字母 L 表示 Last 最后,例如:对于月,L 表示每月最后一天;

常用 Cron 表达式:

# 每分钟
*/1 * * * *

# 每刻钟
0,15,30,45 * * * *

# 每天 8 点半
30 8 * * *  

创建 CronJob

命令行

创建一个每分钟运行的定时任务:

kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *"  

YAML 文件

YAML 配置文件:

apiVersion: batch/v2alpha1  
kind: CronJob  
metadata:  
  name: every-minute-cronjob
spec:  
  concurrencyPolicy: Forbid
  failedJobsHistoryLimit: 3
  successfulJobsHistoryLimit: 1
  schedule: "*/1 * * * *"
  jobTemplate:
    metadata:
      name: every-minute-job
    spec:
      template:
        metadata:
          name: every-minute
        spec:
          containers:
            - name: every-minite
              image: busybox

配置 concurrencyPolicy,是否允许并发执行,Allow 允许 Forbid 禁止;

配置 failedJobsHistoryLimit,显示失败历史任务数量;

配置 successfulJobsHistoryLimit,显示成功历史任务数量;

配置 schedule,Cron 表达式。

启动 CronJob:

kubectl create -f every-minute-cronjob.yml  

参考