将 Kubernetes cronjob 安排到 运行 一次
Schedule a Kubernetes cronjob to run just once
如何在特定时间安排 Kubernetes cron job 到 运行 一次?
(或者,一个 Kubernetes 作业没有立即安排到 运行,而是延迟了一段时间——在一些调度系统中被称为“最早到 运行".)
文档说:
Cron jobs can also schedule individual tasks for a specific time [...]
但这在工作经历方面如何运作?控制平面是否足够聪明,知道调度是针对特定时间的,不会重复发生?
您始终可以在计划 cron 表达式中放置特定的分钟、小时、日期、月份,例如 12:15am 12 月 25 日:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "15 0 25 12 *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
不幸的是,它不支持指定年份(cron 表达式中的单个 *
表示星期几)但是您有一年的时间在相同的日期和时间再次到来之前删除 cronjob下一年。
如果您需要安排您的工作并且 运行 它只需要一次,您可以在 Linux 中使用 at
command,它允许安排命令在特定时间执行.
例如:
echo "kubectl create -f job.yaml" | at 08:52
应该在管理机器或主节点上添加命令。
如何在特定时间安排 Kubernetes cron job 到 运行 一次?
(或者,一个 Kubernetes 作业没有立即安排到 运行,而是延迟了一段时间——在一些调度系统中被称为“最早到 运行".)
文档说:
Cron jobs can also schedule individual tasks for a specific time [...]
但这在工作经历方面如何运作?控制平面是否足够聪明,知道调度是针对特定时间的,不会重复发生?
您始终可以在计划 cron 表达式中放置特定的分钟、小时、日期、月份,例如 12:15am 12 月 25 日:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "15 0 25 12 *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
imagePullPolicy: IfNotPresent
command:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
不幸的是,它不支持指定年份(cron 表达式中的单个 *
表示星期几)但是您有一年的时间在相同的日期和时间再次到来之前删除 cronjob下一年。
如果您需要安排您的工作并且 运行 它只需要一次,您可以在 Linux 中使用 at
command,它允许安排命令在特定时间执行.
例如:
echo "kubectl create -f job.yaml" | at 08:52
应该在管理机器或主节点上添加命令。