例如,如果我设置了一个kubernetes cronjob
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
然后它将每 5 分钟创建一个作业。
但是,如果作业需要例如 4 分钟,那么它将在前一个作业完成后 1 分钟创建另一个作业。
有没有办法让它在上一个作业完成后每 5 分钟创建一个作业?
你可能会说;只需制定计划*/9 * * * *
以考虑工作所需的 4 分钟,但工作可能无法像那样预测。
例如,如果我设置了一个kubernetes cronjob
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
然后它将每 5 分钟创建一个作业。
但是,如果作业需要例如 4 分钟,那么它将在前一个作业完成后 1 分钟创建另一个作业。
有没有办法让它在上一个作业完成后每 5 分钟创建一个作业?
你可能会说;只需制定计划*/9 * * * *
以考虑工作所需的 4 分钟,但工作可能无法像那样预测。
不幸的是,Kubernetes 内不可能CronJob
指定在作业完成后计时器何时启动(例如 5 分钟)的情况。
关于cron
:
软件实用程序cron是类 Unix计算机操作系统中基于时间的作业调度程序。设置和维护软件环境的用户使用 cron 来安排作业(命令或shell 脚本)以固定时间、日期或间隔定期运行。
您CronJob
在 Kubernetes 环境中的行为可以通过以下方式修改:
Schedule
中所说spec
schedule: "*/5 * * * *"
Job
处理相同的并发执行:
Job
没有完成,新的将被跳过Job
将被替换为新的true
,则所有后续执行都将暂停。此设置不适用于已经开始的执行。可以参考官方文档:CronJobs
由于不知道Job
您要运行哪种类型,您可以尝试:
while true
do
HERE_RUN_YOUR_JOB_AND_WAIT_FOR_COMPLETION.sh
sleep 300 # ( 5 * 60 seconds )
done
另一种方法是创建一个可以连接到 Kubernetes API的 pod 。
查看有关以下内容的其他资源Jobs
:
如果您对此有任何疑问,请告诉我。