Kubernetes CronJob
Kubernetes CronJob 是一种用于在 Kubernetes 集群中定期运行任务的资源对象。它类似于 Linux 系统中的 cron
工具,允许你按照预定的时间表执行任务。CronJob 非常适合用于执行定期备份、发送报告、清理数据等周期性任务。
什么是 Kubernetes CronJob?
CronJob 是 Kubernetes 中的一种工作负载类型,它允许你定义一个任务(Job),并按照 Cron 格式的时间 表来调度这个任务的执行。CronJob 会创建一个或多个 Job 对象来执行任务,并且可以根据需要保留历史记录。
Cron 格式
CronJob 使用标准的 Cron 格式来定义时间表。Cron 格式由五个字段组成,分别表示分钟、小时、日期、月份和星期。例如:
# ┌───────────── 分钟 (0 - 59)
# │ ┌───────────── 小时 (0 - 23)
# │ │ ┌───────────── 日期 (1 - 31)
# │ │ │ ┌───────────── 月份 (1 - 12)
# │ │ │ │ ┌───────────── 星期 (0 - 6) (星期日到星期六)
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
例如,0 * * * *
表示每小时的第 0 分钟执行任务。
创建 CronJob
下面是一个简单的 CronJob 示例,它每分钟运行一次,输出当前时间:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo "Hello from Kubernetes CronJob"
restartPolicy: OnFailure
在这个示例中:
schedule
字段定义了任务的执行时间表,*/1 * * * *
表示每分钟执行一次。jobTemplate
定义了任务的模板,其中包含一个容器,该容器使用busybox
镜像,并执行一个简单的命令来输出当前时间和一条消息。