我已经安排K8S cron每30分钟运行一次。如果当前作业仍在运行,并且下一个cron计划已经到达,它不应该创建新作业,而是等待下一个计划。如果前一个作业仍处于运行状态,则重复相同的过程。
mbskvtky1#
在CronJob yaml中将以下属性设置为禁止
.spec.concurrencyPolicy
字符串https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#concurrency-policy
zhte4eai2#
spec.concurrencyPolicy: Forbid将推迟启动第二个作业,如果仍有一个旧作业正在运行。但是,旧作业完成后,该作业将被排队,以便立即启动。要完全跳过运行新作业,而是等到下一个计划时间,请将.spec.startingDeadlineSeconds设置为小于cronjob间隔(但大于作业的最大预期启动时间)。如果每30分钟运行一次作业,并且知道作业启动时间不会超过一分钟,则设置.spec.startingDeadlineSeconds: 60
spec.concurrencyPolicy: Forbid
.spec.startingDeadlineSeconds
.spec.startingDeadlineSeconds: 60
2条答案
按热度按时间mbskvtky1#
在CronJob yaml中将以下属性设置为禁止
字符串
https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#concurrency-policy
zhte4eai2#
spec.concurrencyPolicy: Forbid
将推迟启动第二个作业,如果仍有一个旧作业正在运行。但是,旧作业完成后,该作业将被排队,以便立即启动。要完全跳过运行新作业,而是等到下一个计划时间,请将
.spec.startingDeadlineSeconds
设置为小于cronjob间隔(但大于作业的最大预期启动时间)。如果每30分钟运行一次作业,并且知道作业启动时间不会超过一分钟,则设置
.spec.startingDeadlineSeconds: 60