CronJob — это рабочая нагрузка Kubernetes, предназначенная для выполнения периодических задач, аналогично crontab в Linux. CronJobs используют формат Cron. Они периодически выполняют задания по заранее определённым расписаниям.
CronJobs помогают автоматизировать и управлять задачами, обеспечивая их своевременное выполнение и снижая нагрузку ручного управления. Они подходят для различных сценариев, включая:
Parameter | Description |
|---|---|
Workload Type | Выберите Cron Job. Для получения подробной информации о различных типах рабочих нагрузок см. Workload Overview. |
Workload Name | Введите имя для рабочей нагрузки. Введите от 1 до 52 символов, начинающихся со строчной буквы и заканчивающихся строчной буквой или цифрой. Разрешены только строчные буквы, цифры и дефисы (-). |
Namespace | Select a namespace for the workload. The default value is default. You can also click Create Namespace to create one. For details, see Creating a Namespace. |
Container Runtime | Стандартный кластер CCE использует общий runtime по умолчанию, тогда как кластер CCE Turbo поддерживает как общий, так и защищённый runtime. Для получения подробной информации об их различиях см. Secure Runtime and Common Runtime. |
Если вы настроили несколько контейнеров для pod, убедитесь, что порты, используемые каждым контейнером, не конфликтуют друг с другом, иначе рабочая нагрузка не может быть развернута.
Parameter | Description |
|---|---|
Container Name | Введите имя для container. |
Pull Policy | Политика обновления или получения образа. Если вы выбираете Always, образ загружается из image repository каждый раз. Если вы не выбираете Always, предпочтительно используется существующий образ узла. Если образ не существует, образ загружается из image repository. |
Image Name | Нажмите Select Image и выберите образ, используемый container. Чтобы использовать сторонний образ, непосредственно введите путь к образу. Убедитесь, что image access credential может использоваться для доступа к image repository. Подробнее см. Using Third-Party Images. |
Image Tag | Выберите тег образа для развертывания. |
CPU Quota |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
Memory Quota |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
(Optional) GPU Quota | Настраивается только при наличии в кластере узлов GPU и установленного дополнения CCE AI Suite (NVIDIA GPU).
Подробности о том, как использовать GPU в кластере, см. Default GPU Scheduling in Kubernetes. |
(Optional) Privileged Container | Программы в привилегированном контейнере обладают определёнными привилегиями. Если эта опция включена, контейнеру будут предоставлены привилегии. Например, привилегированные контейнеры могут управлять сетевыми устройствами на хост‑машине, изменять параметры ядра, получать доступ ко всем устройствам узла. Для получения дополнительной информации см. Pod Security Standards. |
(Optional) Init Container | Определяет, использовать ли контейнер в качестве init‑контейнера. Init‑контейнер не поддерживает health check. Init‑контейнер — это специальный контейнер, который запускается до того, как будут запущены другие контейнеры приложений в pod. Каждый pod может содержать несколько контейнеров. Кроме того, pod может содержать один или несколько init‑контейнеров. Контейнеры приложений в pod запускаются и работают только после завершения работы всех init‑контейнеров. Для получения подробной информации см. Init Containers. |
(Необязательно) Run Option | Добавьте параметры запуска для контейнера. Для получения подробной информации см. Pod. CCE поддерживает следующие параметры запуска:
|
Parameter | Description |
|---|---|
Concurrency Policy | Поддерживаются следующие режимы: |
Настройки политики | Укажите, когда будет выполнен новый CronJob. Настройки политики в YAML реализуются с помощью cron‑выражений.
ПРИМЕЧАНИЕ:
|
Часовой пояс | Укажите часовой пояс, в котором применяются настройки политики. Если этот параметр не указан, по умолчанию будет использоваться часовой пояс главного узла. |
Job Records | Настройте количество успешных или неудачных заданий, которые резервируются. Если значение установлено в 0, задания не будут резервироваться после завершения или неудачи. |
Parameter | Description |
|---|---|
Labels and Annotations | Добавьте метки или аннотации для pod‑ов, используя пары ключ‑значение. После настройки нажмите Confirm. Подробную информацию о метках и аннотациях см. в Configuring Labels and Annotations. |
Network Configuration |
|
CronJob имеет следующие параметры конфигурации:
Ниже приведён пример CronJob, сохранённый в файле cronjob.yaml.
В кластерах версии v1.21 и новее CronJob apiVersion — batch/v1.
В кластерах версии ниже v1.21 CronJob apiVersion — batch/v1beta1.
apiVersion: batch/v1kind: CronJobmetadata:name: hellospec:schedule: "*/1 * * * *" # The job is executed every minute.jobTemplate:spec:template:spec:containers:- name: helloimage: busyboxcommand:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailureimagePullSecrets:- name: default-secret
Запустите задачу.
kubectl create -f cronjob.yaml
Отображается информация, аналогичная следующей:
cronjob.batch/hello created
kubectl get cronjob
Вывод команды:
NAME SCHEDULE TIMEZONE SUSPEND ACTIVE LAST SCHEDULE AGEhello */1 * * * * <none> False 0 59s 2m36s
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 114s
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
После создания CronJob вы можете выполнить операции, перечисленные в Table 1.
Operation | Description |
|---|---|
Редактирование YAML-файла | Нажмите More > Edit YAML рядом с именем CronJob, чтобы отредактировать YAML-файл текущей job. |
Остановка CronJob |
|
Удаление CronJob |
|