在 Kubernetes 中,CronJob 是一种控制器,基于 Cron 语法创建和管理基于时间表的 Jobs。它设计用于在固定时间运行任务,类似于类 Unix 操作系统中的 cron 实用程序。CronJob 适用于自动化重复任务、批处理处理以及 Kubernetes 集群中的定时作业。
基本概念
Cron 语法:CronJob 中使用的 Cron 语法允许您指定作业的时间表。它由五个字段组成:分钟、小时、月份中的某一天、月份和星期中的某一天。例如,表达式 */15 * * * * 表示"每隔 15 分钟一次"。
Job 模板:CronJob 具有一个 Job 模板,定义了根据时间表应该创建的 Pod。此模板类似于常规的 Pod 规范。
并发策略:CronJob 支持并发策略,用于指定在前一个作业仍在运行时如何处理重叠执行。选项包括 Allow(默认值)、Forbid 和 Replace。
作业历史:CronJob 可以保留指定数量的成功和失败的 Job 实例。这使您可以查看作业执行历史。
基本使用
- 定义yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: cronjob-simple
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: cronjob-simple
image: busybox:1.28
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the cron job
restartPolicy: Never
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 2
schedule :定义cron表达式
代码语言:javascript复制# ┌───────────── 分钟 (0 - 59)
# │ ┌───────────── 小时 (0 - 23)
# │ │ ┌───────────── 月的某天 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周六)
# │ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
successfulJobsHistoryLimit:保留成功运行的历史PodfailedJobsHistoryLimit:保留失败运行的历史Pod
- 观察运行结果
通过时间来看确实每隔一分钟启动一个,也只保留了最近三次成功的job 通过以下命令也能看到pod中打印的内容
代码语言:javascript复制kubectl logs cronjob-simple-28491822-4bdn8