• Русский
  • CronJobs

    Понимание CronJobs

    Обратитесь к официальной документации Kubernetes:

    CronJob определяет задачи, которые выполняются до завершения и затем останавливаются. Они позволяют запускать одну и ту же Job несколько раз согласно расписанию.

    CronJob — это тип контроллера рабочих нагрузок в Kubernetes. Вы можете создать CronJob через веб-консоль или CLI для периодического или повторяющегося запуска непостоянной программы, такой как запланированные резервные копирования, очистки или рассылки электронной почты.

    Создание CronJobs

    Создание CronJob с помощью CLI

    Предварительные требования

    • Убедитесь, что kubectl настроен и подключен к вашему кластеру.

    Пример YAML-файла

    # example-cronjob.yaml
    apiVersion: batch/v1
    kind: CronJob
    metadata:
      name: hello
    spec:
      schedule: "* * * * *" 
      jobTemplate:
        spec:
          template:
            spec:
              containers:
              - name: hello
                image: busybox:1.28
                imagePullPolicy: IfNotPresent
                command:
                - /bin/sh
                - -c
                - date; echo Hello from the Kubernetes cluster
              restartPolicy: OnFailure

    Создание CronJobs через YAML

    kubectl apply -f example-cronjob.yaml

    Создание CronJobs через веб-консоль

    Предварительные требования

    Получите адрес образа. Образы могут быть взяты из реестра образов, интегрированного администратором платформы через toolchain, либо из сторонних реестров образов.

    • Для образов из интегрированного реестра администратор обычно назначает реестр образов вашему проекту, что позволяет использовать образы из него. Если нужный реестр образов не найден, обратитесь к администратору для выделения.

    • Если используется сторонний реестр образов, убедитесь, что образы можно напрямую загрузить из него в текущем кластере.

    Процедура — Настройка базовой информации

    1. В Container Platform перейдите в Workloads > CronJobs в левой боковой панели.

    2. Нажмите Create CronJob.

    3. Выберите или введите образ и нажмите Confirm.

      Примечание: Фильтрация образов доступна только при использовании образов из интегрированного реестра платформы. Например, интегрированный проект с именем containers (docker-registry-projectname) означает, что projectname — имя проекта платформы, а containers — имя проекта в реестре образов.

    4. В разделе Cron Configuration настройте метод выполнения задачи и связанные параметры.

      Execute Type:

      • Manual: Ручное выполнение требует явного запуска задачи вручную для каждого запуска.

      • Scheduled: Запланированное выполнение требует настройки следующих параметров расписания:

        ПараметрОписание
        ScheduleОпределяет расписание cron с использованием синтаксиса Crontab. Контроллер CronJob рассчитывает следующее время выполнения с учётом выбранного часового пояса.

        Примечания:
        • Для Kubernetes версий < v1.25: выбор часового пояса не поддерживается; расписание ДОЛЖНО использовать UTC.
        • Для Kubernetes версий ≥ v1.25: поддерживается расписание с учётом часового пояса (по умолчанию — локальный часовой пояс пользователя).
        Concurrency PolicyОпределяет, как обрабатываются параллельные выполнения Job (Allow, Forbid или Replace согласно спецификации K8s).

      Job History Retention:

      • Установите лимиты хранения для завершённых Jobs:
        • History Limits: лимит истории успешных задач (по умолчанию: 20)
        • Failed Jobs: лимит истории неудачных задач** (по умолчанию: 20)
      • При превышении лимитов хранения старейшие задачи удаляются в первую очередь.
    5. В разделе Job Configuration выберите тип задачи. CronJob управляет Jobs, состоящими из Pods. Настройте шаблон Job в зависимости от типа вашей рабочей нагрузки:

      ПараметрОписание
      Job TypeВыберите режим завершения Job (Non-parallel, Parallel with fixed completion count или Indexed Job согласно паттернам Job в K8s).
      Backoff LimitУстановите максимальное количество попыток повторного запуска перед пометкой Job как неудачной.

    Процедура — Настройка Pod

    Процедура — Настройка контейнеров

    Создание

    • Нажмите Create.

    Немедленное выполнение

    Поиск ресурса CronJob

    • веб-консоль: в Container Platform перейдите в Workloads > CronJobs в левой боковой панели.
    • CLI:
      kubectl get cronjobs -n <namespace>

    Запуск выполнения по требованию

    • веб-консоль: Execute Immediately
      1. Нажмите вертикальное многоточие (⋮) справа в списке cronjob.
      2. Нажмите Execute Immediately. (Или на странице деталей CronJob нажмите Actions в правом верхнем углу и выберите Execute Immediately).
    • CLI:
      kubectl create job --from=cronjob/<cronjob-name> <job-name> -n <namespace>

    Проверка деталей Job:

    kubectl describe job/<job-name> -n <namespace>
    kubectl logs job/<job-name> -n <namespace>

    Мониторинг статуса выполнения

    СтатусОписание
    PendingJob создан, но ещё не запланирован к выполнению.
    RunningPod(ы) Job активно выполняются.
    SucceededВсе Pods, связанные с Job, успешно завершились (код выхода 0).
    FailedПо крайней мере один Pod, связанный с Job, завершился с ошибкой (код выхода не 0).

    Удаление CronJobs

    Удаление CronJobs через веб-консоль

    1. В Container Platform перейдите в Workloads > CronJobs.
    2. Найдите CronJobs, которые хотите удалить.
    3. В выпадающем меню Actions нажмите кнопку Delete и подтвердите.

    Удаление CronJobs через CLI

      kubectl delete cronjob <cronjob-name>