Создание Cron Job

Cron Job выполняется периодически по расписанию. Можно запустить синхронизацию времени для всех активных узлов в определенный момент времени.

Cron Job аналогичен crontab Linux. Crontab — это список команд, которые используются для изменения и управления Cron Job. Характеристики Cron Job:

  • Запускается только один раз в указанное время.

  • Запускается периодически в указанное время.

Cron Job используется следующим образом:

  • Планирует Jobs на указанное время.

  • Создает Jobs для периодического выполнения, например, резервное копирование базы данных и отправка электронной почты.

Перед началом работы

Создайте кластер и узел, проверьте, что они находится в статусе «Running».

Создание рабочей нагрузки в консоли ССЕ

  1. Войдите в консоль управления Advanced:

  2. Чтобы открыть список сервисов, нажмите Service List.

  3. Выберите Computing → Cloud Container Engine.

  4. В консоли управления CCE выберите Clusters.

  5. Нажмите на название созданного кластера.

  6. В левом меню выберите Workloads.

  7. Перейдите на вкладку Cron Job.

  8. Нажмите Create Workload.

  9. Заполните поле Basic Info:

    Параметр

    Описание

    Workload Type

    Выберите тип рабочей нагрузки Cron Job.

    Workload Name

    Укажите название рабочей нагрузки.

    Namespace

    Выберите пространство имен рабочей нагрузки.

    По умолчанию — default. Чтобы создать новое, нажмите Create Namespace.

    Cluster Name

    Название кластера указано по умолчанию.

    (Опционально) Description

    Описание рабочей нагрузки.

    Добавьте при необходимости.

  10. Заполните поле Container Settings согласно таблице ниже. Чтобы настроить несколько контейнеров в поде, нажмите Add Container.

    Параметр

    Описание

    Basic Info

    Выполните базовые настройки контейнера.

    Lifecycle

    Настройте параметры жизненного цикла контейнера.

    Environment Variables

    Настройте окружение.

    Image Access Credential

    Укажите учетные данные, используемые для доступа к хранилищу образов.

    По умолчанию — default-secret. Этот секрет можно использовать для доступа к образам в SWR. Чтобы создать новый, нажмите Create Secret.

    GPU

    Инстанс рабочей нагрузки будет запланирован для узла с указанным типом графической карты GPU.

    По умолчанию — All.

  11. Чтобы настроить расписание, заполните поле Execution Settings:

    Параметр

    Описание

    Concurrency Policy

    Политика параллелизма. Выберите один из трех режимов:

    • Forbid — новый Job не может быть создан до завершения предыдущего Job.

    • Allow — Cron Job разрешает параллельно запускать Jobs, которые освобождают ресурсы кластера.

    • Replace — новый Job заменяет предыдущий Job, когда пришло время создать Job, но предыдущий Job не завершен.

    Policy Settings

    Этот параметр настройки политики указывает, когда будет запускаться новый Cron Job. Настройки политики в YAML реализуются с помощью cron-выражений.

    • Cron Job выполняется в определенный интервал времени. Единицы измерения — минуты, часы, дни или месяцы. Например, если Cron Job выполняется каждые 30 минут, cron-выражение имеет вид */30 * * * * *, а время выполнения 00:00:00, 00:30:00, 01:00:00 и так далее.

    • Cron Job выполняется в определенное время в течение месяца. Например, если Cron Job выполняется в 00:00 первого дня каждого месяца, cron-выражение имеет вид 0 0 1 */1 *, а время выполнения ****-01-01 00:00:00, ****-02-01 00:00:00 и так далее.

    • Cron Job выполняется в определенное время в течение недели. Например, если Cron Job выполняется в 00:00 каждый понедельник, cron-выражение имеет вид 0 0 * * * 1, а время выполнения ****-**-01 00:00:00 в понедельник, ****-**-08 00:00:00 в понедельник и так далее.

    Примечание

    • Если Cron Job выполняется в определенное время в течение месяца, а количество дней в месяце превышает заданное, Cron Job не будет выполняться в этом месяце. Например, если количество дней установлено равным 30, но в феврале нет 30 дня, Cron Job пропустит этот месяц и продолжит выполнение 30 марта.

    • В связи с принципом работы cron, последний интервал может не выполниться. Диапазон единиц времени делится по модулю. Например, если единицей измерения является минута, значение варьируется от 0 до 59. Если значение не может быть точно разделено, последний интервал не учитывается.

      Например, единица периода — час. Так как 24/2, 24/3, 24/4, 24/6, 24/8 и 24/12 делится без остатка, то все итерации заданного периода будут учитываться. В любом другом случае последний интервал не будет учитываться. Например, если cron-выражение имеет вид * * */12 * * *, то время его выполнения 00:00:00 и 12:00:00 каждый день. Если cron-выражение — * * */13 * * *, то время его выполнения — 00:00:00 и 13:00:00 каждый день. В 00:00 следующего дня задача выполнится при учете того, что период не достиг 13 часов.

      Так как /2, /3, /4, /6, /8 и /12 могут быть разделены на 24, то точный период может быть представлен. Если используется другой период, то последний период будет сброшен в начале нового дня. Например, если cron-выражение имеет вид * * */12 * * *, время выполнения 00:00:00 и 12:00:00 каждый день. Если cron-выражение — * * */13 * * *, время выполнения — 00:00:00 и 13:00:00 каждый день. В 00:00 следующего дня время выполнения обновляется, даже если период не достиг 13 часов.

    Job Records

    Можно установить количество Jobs, которые будут успешно выполнены или не будут выполнены. Установка лимита 0 — соответствует сохранению ни одного Job после его завершения.

  12. В поле Advanced Settings настройте метки и аннотации.

  13. Нажмите Create Workload.

После успешного создания рабочая нагрузка появится со статусом «Running» на вкладке Cron Jobs.

Создание рабочей нагрузки через kubectl

Конфигурация Cron Job:

  • .spec.schedule — принимает строку формата Cron, например, 0 * * * * * или @hourly, в качестве времени расписания создаваемых и выполняемых Jobs.

  • .spec.jobTemplate — определяет запуск Jobs и имеет ту же схему, что и при создании Jobs с помощью kubectl.

  • spec.startingDeadlineSeconds — указывает крайний срок начала Job.

  • .spec.concurrencyPolicy — параметры параллельного выполнения Cron Job. Поддерживаются следующие параметры:

    • Allow (значение по умолчанию) — разрешает параллельное выполнение Jobs.

    • Forbid — запрещает параллельный запуск, пропуская следующий запуск, если предыдущий еще не завершился.

    • Replace — отменяет текущий Job и заменяет его новым.

Ниже приведен пример Cron Job, который сохраняется в файле cronjob.yaml.

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

Запуск Job

  1. Запустите Cron Job, введите:

    kubectl create -f cronjob.yaml
    

    В выводе команды появится:

    cronjob.batch/hello created
    
  2. Запросите статус выполнения Cron Job:

    • Введите kubectl get cronjob.

      NAME      SCHEDULE      SUSPEND   ACTIVE    LAST SCHEDULE   AGE
      hello     */1 * * * *   False     0         <none>          9s
      
    • Введите kubectl get jobs.

      NAME               COMPLETIONS   DURATION   AGE
      hello-1597387980   1/1           27s        45s
      
    • Введите kubectl get pod.

      NAME                           READY     STATUS      RESTARTS   AGE
      hello-1597387980-tjv8f         0/1       Completed   0          114s
      hello-1597388040-lckg9         0/1       Completed   0          39s
      
    • Введите kubectl logs hello-1597387980-tjv8f.

      Fri Aug 14 06:56:31 UTC 2020
      Hello from the Kubernetes cluster
      
    • Введите kubectl delete cronjob hello.

    cronjob.batch "hello" deleted
    

Примечание

При удалении Cron Job связанные с ним поды и Jobs тоже удаляются.

Связанные операции

Операция

Описание

Изменение YAML-файла

Чтобы изменить YAML-файл, нажмите More → Edit YAML рядом с названием Cron Job.

Остановка Cron Job

  1. В столбце Operation нажмите Stop.

  2. Нажмите Yes.

Удаление Cron Job

  1. В столбце Operation нажмите More → Delete.

  2. Нажмите Yes.

Удаленные Jobs нельзя восстановить. Соблюдайте осторожность при выполнении этой операции.

Запустили Evolution free tier
для Dev & Test
Получить