Cron Job выполняется периодически по расписанию. Можно запустить синхронизацию времени для всех активных узлов в определенный момент времени.
Cron Job аналогичен crontab Linux. Crontab — это список команд, которые используются для изменения и управления Cron Job. Характеристики Cron Job:
Запускается только один раз в указанное время.
Запускается периодически в указанное время.
Cron Job используется следующим образом:
Планирует Jobs на указанное время.
Создает Jobs для периодического выполнения, например, резервное копирование базы данных и отправка электронной почты.
Создайте кластер и узел, проверьте, что они находится в статусе «Running».
Войдите в консоль управления Advanced:
В списке сервисов выберите Cloud Container Engine.
В консоли управления CCE выберите Clusters.
Нажмите на название созданного кластера.
В левом меню выберите Workloads.
Перейдите на вкладку Cron Job.
Нажмите Create Workload.
Заполните поле Basic Info:
Параметр | Описание |
|---|---|
Workload Type | Выберите тип рабочей нагрузки Cron Job. |
Workload Name | Укажите название рабочей нагрузки. |
Namespace | Выберите пространство имен рабочей нагрузки. По умолчанию — default. Чтобы создать новое, нажмите Create Namespace. |
Cluster Name | Название кластера указано по умолчанию. |
(Опционально) Description | Описание рабочей нагрузки. Добавьте при необходимости. |
Заполните поле Container Settings согласно таблице ниже. Чтобы настроить несколько контейнеров в поде, нажмите Add Container.
Параметр | Описание |
|---|---|
Basic Info | Выполните базовые настройки контейнера. |
Lifecycle | Настройте параметры жизненного цикла контейнера. |
Environment Variables | Настройте окружение. |
Image Access Credential | Укажите учетные данные, используемые для доступа к хранилищу образов. По умолчанию — default-secret. Этот секрет можно использовать для доступа к образам в SWR. Чтобы создать новый, нажмите Create Secret. |
GPU | Инстанс рабочей нагрузки будет запланирован для узла с указанным типом графической карты GPU. По умолчанию — All. |
Чтобы настроить расписание, заполните поле Execution Settings:
Параметр | Описание |
|---|---|
Concurrency Policy | Политика параллелизма. Выберите один из трех режимов:
|
Policy Settings | Этот параметр настройки политики указывает, когда будет запускаться новый Cron Job. Настройки политики в YAML реализуются с помощью cron-выражений.
Примечание
|
Job Records | Можно установить количество Jobs, которые будут успешно выполнены или не будут выполнены. Установка лимита 0 — соответствует сохранению ни одного Job после его завершения. |
В поле Advanced Settings настройте метки и аннотации.
Нажмите Create Workload.
После успешного создания рабочая нагрузка появится со статусом «Running» на вкладке Cron Jobs.
Конфигурация 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/v1beta1kind: CronJobmetadata:name: hellospec:schedule: "*/1 * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busyboxargs:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure
Запустите Cron Job, введите:
kubectl create -f cronjob.yaml
В выводе команды появится:
cronjob.batch/hello created
Запросите статус выполнения Cron Job:
Введите kubectl get cronjob.
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGEhello */1 * * * * False 0 <none> 9s
Введите kubectl get jobs.
NAME COMPLETIONS DURATION AGEhello-1597387980 1/1 27s 45s
Введите kubectl get pod.
NAME READY STATUS RESTARTS AGEhello-1597387980-tjv8f 0/1 Completed 0 114shello-1597388040-lckg9 0/1 Completed 0 39s
Введите kubectl logs hello-1597387980-tjv8f.
Fri Aug 14 06:56:31 UTC 2020Hello from the Kubernetes cluster
Введите kubectl delete cronjob hello.
cronjob.batch "hello" deleted
При удалении Cron Job связанные с ним поды и Jobs тоже удаляются.
Операция | Описание |
|---|---|
Изменение YAML-файла | Чтобы изменить YAML-файл, нажмите More → Edit YAML рядом с названием Cron Job. |
Остановка Cron Job |
|
Удаление Cron Job |
Удаленные Jobs нельзя восстановить. Соблюдайте осторожность при выполнении этой операции. |