k_vishwanath
k_vishwanath

Reputation: 1585

Kubernetes CronJob - Skip job if previous is still running AND wait for the next schedule time

I have scheduled the K8s cron to run every 30 mins.

If the current job is still running and the next cron schedule has reached it shouldn't create a new job but rather wait for the next schedule.

And repeat the same process if the previous job is still in Running state.

Upvotes: 15

Views: 12237

Answers (2)

k_vishwanath
k_vishwanath

Reputation: 1585

set the following property to Forbid in CronJob yaml

.spec.concurrencyPolicy

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#concurrency-policy

Upvotes: 30

Allen Luce
Allen Luce

Reputation: 8389

spec.concurrencyPolicy: Forbid will hold off starting a second job if there is still an old one running. However that job will be queued to start immediately after the old job finishes.

To skip running a new job entirely and instead wait until the next scheduled time, set .spec.startingDeadlineSeconds to be smaller than the cronjob interval (but larger than the max expected startup time of the job).

If you're running a job every 30 minutes and know the job will never take more than one minute to start, set .spec.startingDeadlineSeconds: 60

Upvotes: 8

Related Questions