Что такое 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 — это удобный способ автоматизировать повторяющиеся задачи. Он отлично подходит для бэкапов, очистки и регулярных отчётов. Главное — грамотно настраивать расписание и следить за ресурсами.