Что такое CronJob в Kubernetes?
Если вы работали в Linux, то наверняка знаете про cron – инструмент для планирования повторяющихся задач. В Kubernetes есть похожий объект — CronJob.
CronJob в Kubernetes — это ресурс, который позволяет запускать задачи по расписанию. Это удобно для бэкапов баз данных, отправки отчётов или регулярной очистки.
Как работает CronJob
- Job в Kubernetes выполняется один раз и завершает работу.
- CronJob — это Job с расписанием, задаваемым в формате cron (
* * * * *
).
При каждом срабатывании расписания Kubernetes создаёт новый pod с Job.
Пример: простой CronJob
Пример CronJob, который каждую минуту выводит “Hello Kubernetes”:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello-cron
spec:
schedule: "*/1 * * * *" # каждую минуту
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- "echo Hello Kubernetes! $(date)"
restartPolicy: OnFailure
Типовые сценарии
- Бэкапы баз данных (ежедневный дамп PostgreSQL/MySQL).
- Очистка логов и старых файлов.
- Автоматические отчёты (экспорт метрик, отправка писем).
- Регулярные проверки (например, пинг внешнего сервиса).
На что обратить внимание
- Пропущенные задания: если кластер был недоступен, задачи не запускаются повторно.
- Слишком частое расписание может перегрузить кластер.
- Рекомендуется указывать successfulJobsHistoryLimit и failedJobsHistoryLimit, чтобы не засорять кластер старыми pod’ами.
Итог
CronJob в Kubernetes — это удобный способ автоматизировать повторяющиеся задачи. Он отлично подходит для бэкапов, очистки и регулярных отчётов. Главное — грамотно настраивать расписание и следить за ресурсами.