Jobs, CronJob
Зачем:
- Пакетная обработка данных
-
Команды/специфические задачи
- Jobs запуск не по расписанию: вручную
- Cron Job реализует паттерн Cron Job: запуск по расписанию
Параметры:
- запускается на выполнение, и после завершения возвращает соответствующий код завершения (exit status), который сообщает, является ли результат успешным или неудачным.
- гарантируют, что один или несколько подов выполнят свои команды и успешно завершатся. После завершения всех подов без ошибок, Job завершается.
- job’ы должны быть идемпотентными, есть риск создания 2х job
- как решать?
- не использовать CronJob k8s: поднять ПОД, внутри crontb
- как решать?
- Ограничение выполнения по времени - параметр activeDeadlineSeconds
- Возможность одновременного выполнения - параметр concurrencyPolicy: Forbid, Allow, Replace
- удаление Job
- ttlSecondsAfterFinished - количество секунд, по истечении которых Job может быть автоматически удален после его завершения (либо Completed, либо Failed). Это также удаляет зависимые объекты, такие как Pod
- failedJobHistorLimit - кол-во Job в кластере сбойных для удаления
- successfulJobHistoryLimit - кол-во Job в кластере завершенных успешно для удаления
- при сбоях
- количество повторов backoffLimit
- restartPolicy: Never (никогда) и OnFailure
- startingDeadlineSeconds
- job’ы должны быть идемпотентными, есть риск создания 2х job
Паттерны
- [Несколько одиночных Job’ов](https://habr.com/ru/companies/otus/articles/546376/) - параметр __completions__
- Несколько параллельно запущенных Job’ов (Work Queue) - параметр __parallelism__