Как предотвратить выполнение Cronjob в Kubernetes, если уже выполняется задание? concurrencyPolicy: Forbid полностью останавливает выполнение задания cron - PullRequest
0 голосов
/ 04 ноября 2019

Мне нужна работа cron для запуска каждые 5 минут. Если более раннее задание cron все еще выполняется, другое задание cron не должно запускаться. Я попытался установить для политики параллелизма значение Forbid, но затем задание cron не запускается вообще.

  1. Задание запускается каждые 5 минут, как и ожидалось, но запускается, даже если более раннее задание cron еще не завершено.

spec:
concurrencyPolicy: Разрешить
расписание: '* / 5 * * * '

Это должно решить проблему, но задание cron никогда не запускается при таком подходе

spec:
concurrencyPolicy: Запретить
расписание: '* / 5 * * **

Установка initialDeadlineSeconds на 3600 или даже на 10 не изменила.

spec:
concurrencyPolicy: Запретить
расписание: '* / 5 * * * *'
initialDeadlineSeconds: 10

Может кто-нибудь помочь мне здесь?

1 Ответ

0 голосов
/ 04 ноября 2019

Из документации kubernetes

Политика параллелизма определяет, как обрабатывать параллельные выполнения задания, созданного этим заданием cron. В спецификации может быть указана только одна из следующих политик параллелизма:

Разрешить (по умолчанию): задание cron разрешает одновременное выполнение заданий

Запретить: задание cron не разрешает одновременные запуски;если пришло время для запуска нового задания, а предыдущий запуск еще не завершен, задание cron пропускает запуск нового задания

Заменить: Если пришло время для запуска нового задания и предыдущего запуска заданияеще не завершено, задание cron заменяет выполняемое в настоящий момент задание новым выполнением задания

В вашем случае должно работать 'concurrencyPolicy: Forbid'. Это не позволит запустить новое задание, если предыдущее задание все еще выполняется. Проблема не с concurrencyPolicy в вашем случае.

Это может быть связано с startDeadlineSeconds. Вы можете удалить его и попробовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...