Облачная платформаAdvanced

Создание Job

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

job — это рабочая нагрузка Kubernetes, предназначенная для управления пакетными задачами, обрабатывающими одноразовые или кратковременные задачи. В отличие от длительно работающих сервисов, управляемых Deployments или StatefulSets, job создаёт один или несколько pod‑ов, выполняя их с определёнными фазами запуска и завершения. Если задача не завершена, job повторно запускает pod до достижения цели.

При необходимости вы можете задать разные задачи для job.

  • Одноразовый job: job создаёт только один pod для выполнения задачи. Если задача успешно завершена, pod завершает работу (exit 0).
  • Job с фиксированным числом завершений: job должен иметь несколько pod, успешно выполнивших задачи. Когда достигается указанное количество успешных завершений pod, задача считается выполненной.
  • Job с рабочей очередью: job обрабатывает задачи из рабочей очереди. Каждому pod назначается индекс. Если каждый из этих pod успешно завершён, job считается завершённым.

Требования

  • Доступен кластер. Подробную информацию о том, как создать кластер, см. Buying a Standard/Turbo Cluster.
  • В кластере есть доступные узлы. Если узлы недоступны, создайте их, обратившись к Creating a Node.

Использование консоли CCE

  1. Войдите в CCE console.
  2. Нажмите название кластера, чтобы перейти в консоль кластера, выберите Workloads в панели навигации и нажмите Create Workload в правом верхнем углу.
  3. Настройте basic information о рабочей нагрузке.

    Параметр

    Описание

    Workload Type

    Выберите Job. Для получения подробной информации о различных типах рабочих нагрузок см. Workload Overview.

    Workload Name

    Введите имя для рабочей нагрузки. Введите от 1 до 63 символов, начинающихся со строчной буквы и заканчивающихся строчной буквой или цифрой. Разрешены только строчные буквы, цифры и дефисы (-).

    Namespace

    Выберите пространство имён для рабочей нагрузки. Значение по умолчанию — default. Вы также можете нажать Create Namespace, чтобы создать его. Для получения подробной информации см. Creating a Namespace.

    Pods

    Введите количество pod‑ов рабочей нагрузки.

    Container Runtime

    Стандартный кластер CCE использует общий runtime по умолчанию, тогда как кластер CCE Turbo поддерживает как общий, так и защищённый runtime. Для получения подробной информации об их различиях см. Secure Runtime and Common Runtime.

  4. Настройте container settings для рабочей нагрузки.

    • Container Information: Нажмите Add Container справа, чтобы настроить несколько контейнеров для pod‑а.
      Caution

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

      • Basic Info: Настройте базовую информацию о контейнере.

        Parameter

        Description

        Container Name

        Введите имя для container.

        Pull Policy

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

        Image Name

        Нажмите Select Image и выберите образ, используемый контейнером.

        Чтобы использовать сторонний образ, непосредственно введите путь к образу. Убедитесь, что image access credential может использоваться для доступа к image repository. Подробнее см. Using Third-Party Images.

        Image Tag

        Выберите тег образа для развертывания.

        CPU Quota

        • Request: минимальное количество ядер CPU, требуемое контейнером. Значение по умолчанию — 0.25 ядра.
        • Limit: максимальное количество ядер CPU, которое может использовать контейнер. Это предотвращает чрезмерное использование ресурсов контейнерами.

        Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications.

        Memory Quota

        • Request: минимальное количество памяти, необходимое контейнеру. Значение по умолчанию — 512 MiB.
        • Limit: максимальное количество памяти, доступное контейнеру. Когда использование памяти превышает указанный лимит памяти, контейнер будет завершён.

        Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications.

        (Optional) GPU Quota

        Настраивается только при наличии в кластере узлов GPU и установленного дополнения CCE AI Suite (NVIDIA GPU).

        • Do not use: GPU не будет использоваться.
        • GPU card: GPU выделяется для контейнера.
        • GPU Virtualization: процент ресурсов GPU, используемых контейнером. Например, если этот параметр установлен в 10%, контейнер будет использовать 10 % ресурсов GPU.

        Подробности о том, как использовать GPU в кластере, см. Default GPU Scheduling in Kubernetes.

        (Optional) Privileged Container

        Программы в privileged container имеют определённые привилегии. Если эта опция включена, контейнеру будут предоставлены привилегии. Например, privileged container могут управлять сетевыми устройствами на хост‑машине, изменять параметры ядра, получать доступ ко всем устройствам узла.

        Для получения дополнительной информации см. Pod Security Standards.

        (Optional) Init Container

        Определяет, использовать ли контейнер в качестве init container. Init container не поддерживает проверку состояния.

        Init container — это специальный контейнер, который запускается до того, как будут запущены другие контейнеры приложений в pod. Каждый pod может содержать несколько контейнеров. Кроме того, pod может содержать один или несколько init containers. Контейнеры приложений в pod запускаются и работают только после завершения работы всех init containers. Для подробностей см. Init Containers.

        (Необязательно) Run Option

        Добавьте параметры запуска для контейнера. Для получения подробной информации см. Pod. CCE поддерживает следующие параметры запуска:

        • stdin: позволяет контейнерам получать ввод из внешних источников, таких как терминалы или другие потоки ввода.
        • tty: выделяет псевдотерминал контейнерам, позволяя отправлять им команды так, как если бы вы использовали локальный терминал.

          В большинстве случаев tty включается вместе со stdin, указывая, что терминал (tty) связан со стандартным вводом (stdin) контейнера. Это позволяет выполнять интерактивные операции, аналогичные команде kubectl exec -i -t. Разница заключается в том, что этот параметр настраивается при запуске pod.

      • (Optional) Lifecycle: Configure operations to be performed in a specific phase of the container lifecycle, such as Startup Command, Post-Start, and Pre-Stop. For details, see Configuring the Container Lifecycle.
      • (Optional) Environment Variables: Configure variables for the container running environment using key-value pairs. These variables transfer external information to containers running in pods and can be flexibly modified after application deployment. For details, see Configuring Environment Variables.
      • (Optional) Data Storage: Mount local storage or cloud storage to the container. The application scenarios and mounting modes vary with the StorageClass. For details, see Storage.
        Note

        Если рабочая нагрузка содержит более одного pod, тома EVS монтировать нельзя.

      • (Optional) Logging: Report standard container output logs to AOM by default, without requiring manual settings. You can manually configure the log collection path. For details, see Using ICAgent to Collect Container Logs.

        To disable the collection of the standard output logs of the current workload, add the annotation kubernetes.AOM.log.stdout: [] in Labels and Annotations in the Advanced Settings area. For details about how to use this annotation, see Table 1.

    • Image Access Credential: Select the credential used for accessing the image repository. The default value is default-secret. You can use default-secret to access images in SWR Shared Edition. For details about default-secret, see default-secret.
    • (Optional) GPU: All is selected by default. The workload instance will be scheduled to the node of the specified GPU type.

  5. (Optional) Configure advanced settings for the workload.

    Параметр

    Описание

    Метки и Аннотации

    Добавьте метки или аннотации для pod'ов, используя пары ключ‑значение. После настройки нажмите Confirm. Для получения подробной информации о метках и аннотациях см. Configuring Labels and Annotations.

    Настройки Job

    • Parallel Pods: Максимальное количество pod'ов, которые могут выполняться параллельно во время выполнения job. Значение не может превышать общее количество pod'ов в job.
    • Timeout (s): Когда job достигает этого времени, статус job становится failed, и все pod'ы в этом job будут удалены. Если оставить этот параметр пустым, job никогда не будет завершаться по тайм‑ауту.
    • Режим завершения
      • Non-indexed: Job считается завершённым, когда все его одинаковые, независимые pod'ы успешно завершаются.
      • Indexed: Каждый pod получает связанный индекс завершения от 0 до количества pod'ов минус 1. Job считается завершённым, когда каждый pod с назначенным индексом успешно выполнен. Для indexed job pod'ы именуются в формате $(job-name)-$(index).
    • Suspend Job: По умолчанию job выполняется сразу после создания. Выполнение job будет приостановлено, если включить эту опцию, и возобновлено после её отключения.

    Конфигурация сети

    • Ограничение пропускной способности входящего/исходящего трафика pod: Вы можете задать ограничения пропускной способности входящего и исходящего трафика для pod'ов. Для получения подробной информации см. Configuring QoS for a Pod.
    • Включить ли указанную конфигурацию сетевого контейнера: доступно только для кластеров, поддерживающих эту функцию. После включения указанной конфигурации сетевого контейнера рабочая нагрузка будет использовать подсеть и группу безопасности, определённые в конфигурации. Для получения подробной информации см. Binding a Subnet and Security Group to a Namespace or Workload Using a Container Network Configuration.
    • Укажите имя конфигурации сетевого контейнера: можно выбрать только пользовательскую конфигурацию сетевого контейнера, у которой тип связанного ресурса — workload.
    • Общая пропускная способность IPv6: доступно только для кластеров, поддерживающих эту функцию. После включения этой функции вы можете настроить общую пропускную способность для pod с двойными IPv6‑стековыми сетевыми интерфейсами. Для получения подробной информации см. Configuring a Shared Bandwidth for Dual-Stack Pods in a CCE Turbo Cluster.

  6. Нажмите Create Workload в правом нижнем углу. Через некоторое время, когда workload переходит в состояние processing, задачи будут обрабатываться последовательно. После обработки всех задач статус workload меняется на Executed.

С помощью kubectl

У job есть следующие параметры конфигурации:

  • .spec.completions: указывает количество pod‑ов, которые должны успешно выполниться, чтобы завершить job. Значение по умолчанию — 1.
  • .spec.parallelism: указывает количество pod‑ов, которые запускаются одновременно. Значение по умолчанию — 1.
  • .spec.backoffLimit: указывает максимальное количество повторных попыток, выполняемых при сбое pod‑а. Когда предел достигнут, pod больше не будет пытаться повторно.
  • .spec.activeDeadlineSeconds: указывает время работы pod‑ов. По истечении этого времени job и его pod‑ы завершаются. .spec.activeDeadlineSeconds имеет более высокий приоритет, чем .spec.backoffLimit. Если job достигает .spec.activeDeadlineSeconds, spec.backoffLimit игнорируется.

Исходя из настроек .spec.completions и .spec.parallelism, job классифицируются по следующим типам.

Table 1 Job types

Job Type

Описание

.spec.completions

.spec.parallelism

One-off jobs

Job создает один pod, пока он не завершится успешно.

1

1

Jobs с фиксированным количеством завершений

Задание создает один pod за раз, пока не будет достигнуто .spec.completions успешных выполнений.

> 1

1

Parallel jobs с фиксированным количеством завершений

Задание создает несколько pod одновременно, пока не будет достигнуто .spec.completions успешных выполнений.

> 1

> 1

Parallel jobs с рабочей очередью

Задание создает один или несколько pod. Каждый pod берёт одну задачу из очереди сообщений, обрабатывает её и повторяет процесс, пока не будет достигнут конец очереди. Затем pod удаляет задачу и завершает работу. Подробности см. Fine Parallel Processing Using a Work Queue.

Оставьте этот параметр пустым.

≥ 1

Ниже приведено примерное задание, которое вычисляет π до 2000й цифры и выводит результат.

apiVersion: batch/v1
kind: Job
metadata:
name: myjob
spec:
completions: 50 # A total of 50 pods need to run to finish a job. In this example, π is printed for 50 times.
parallelism: 5 # A total of 5 pods run in parallel.
backoffLimit: 5 # A maximum of 5 retries is allowed.
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never # For a job, set this parameter to Never or OnFailure. For other controllers (such as Deployments), set this parameter to Always.
imagePullSecrets:
- name: default-secret

Запустите задание.

  1. Запустите задание.

    kubectl apply -f myjob.yaml

    Вывод команды:

    job.batch/myjob created

  2. Просмотрите детали задания.

    kubectl get job

    Вывод команды:

    NAME COMPLETIONS DURATION AGE
    myjob 50/50 23s 3m45s

    Если значение COMPLETIONS равно 50/50, задание выполнено успешно.

  3. Просмотрите статус pod.

    kubectl get pod

    Вывод команды:

    NAME READY STATUS RESTARTS AGE
    myjob-29qlw 0/1 Completed 0 4m5s
    ...

    Если статус Completed, задача завершена.

  4. Просмотрите логи Под.

    kubectl logs myjob-29qlw

    Вывод команды:

    3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901

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

После создания одноразовой задачи вы можете выполнить операции, перечисленные в Table 2.

Table 2 Другие операции

Операция

Описание

Просмотр YAML‑файла

Найдите строку, содержащую целевую задачу, и выберите More > View YAML, чтобы просмотреть YAML‑файл задачи.

Удаление задачи

  1. Выберите целевую задачу и выберите More > Delete в столбце Operation.
  2. Нажмите Yes.

    Удалённые задачи нельзя восстановить. Будьте осторожны при удалении задачи.