Jobs выполняются в течение определенного времени до их завершения. Они могут быть выполнены сразу после развертывания. Job завершается после кода завершения (exit 0).
Job — это объект ресурса, который используется для управления пакетными заданиями. Он отличается от long-term servo рабочих нагрузок (Deployment и StatefulSet).
Job запускается и завершается в определенное время, а рабочие нагрузки, рассчитанные на длительное выполнение, работают непрерывно до завершения. Управляемые Job поды автоматически завершаются после успешного выполнения Job согласно настройкам. «Success» флаг меняется в зависимости от политики spec.completions.
Типы Jobs:
Разовые Jobs: один под запускается один раз до успешного завершения.
Jobs с фиксированным количеством успехов: N подов запускаются до успешного завершения.
Queue Job считается завершенным на основании global success, подтвержденного приложением.
Вы можете создавать Jobs в консоли CCE или с помощью команд kubectl.
Создайте кластер и узел, проверьте, что они находится в статусе «Running».
Чтобы создать рабочую нагрузку:
Войдите в консоль управления Advanced:
В списке сервисов выберите Cloud Container Engine.
В консоли управления CCE выберите Clusters.
Нажмите на название созданного кластера.
В левом меню выберите Workloads.
Перейдите на вкладку Job.
Нажмите Create Workload.
Заполните поле Basic Info:
Параметр | Описание |
|---|---|
Workload Type | Выберите тип рабочей нагрузки Job. |
Workload Name | Укажите название рабочей нагрузки. |
Namespace | Выберите пространство имен рабочей нагрузки. По умолчанию — default. Чтобы создать новое, нажмите Create Namespace. |
Pods | Укажите количество подов в рабочей нагрузке. |
Time Zone Synchronization | Синхронизация времени. Позволяет контейнерам и узлам работать в одном часовом поясе. Эта функция зависит от локального диска, подключенного к контейнеру. Не изменяйте и не удаляйте часовой пояс. Активируйте этот параметр при необходимости. |
Cluster Name | Название кластера указано по умолчанию. |
(Опционально) Description | Описание рабочей нагрузки. Добавьте при необходимости. |
Заполните поле Container Settings согласно таблице ниже. Чтобы настроить несколько контейнеров в поде, нажмите Add Container.
Параметр | Описание |
|---|---|
Basic Info | Выполните базовые настройки контейнера. |
Lifecycle | Настройте параметры жизненного цикла контейнера. |
Environment Variables | Настройте окружение. |
Data Storage | Настройте хранение данных. Примечание Если рабочая нагрузка содержит больше одного пода, томы EVS не могут быть смонтированы. |
Logging | Настройте сбор логов контейнера. |
Image Access Credential | Укажите учетные данные, используемые для доступа к хранилищу образов. По умолчанию — default-secret. Этот секрет можно использовать для доступа к образам в SWR. Чтобы создать новый, нажмите Create Secret. |
GPU | Инстанс рабочей нагрузки будет запланирован для узла с указанным типом графической карты GPU. По умолчанию — All. |
Заполните поле Advanced Settings:
Параметр | Описание |
|---|---|
Labels and Annotations | Настройте метки и аннотации. |
Job Settings | Задайте параметры:
|
Нажмите Create Workload.
После успешного создания рабочая нагрузка появится со статусом «Running» на вкладке Jobs.
Конфигурация Job:
spec.template — имеет ту же схему, что и под.
RestartPolicy — может быть установлено только Never или OnFailure.
Job с одним подом завершится после успешного запуска пода по умолчанию.
.spec.completions — указывает количество подов, которые должны успешно запуститься до завершения. Значение по умолчанию «1».
.spec.parallelism — указывает количество подов, которые запускаются параллельно. Значение по умолчанию «1».
spec.backoffLimit — указывает максимальное количество попыток, выполняемых в случае сбоя пода. Если указать «2», то Job дважды попробует запустить под и остановится.
.spec.activeDeadlineSeconds — указывает время выполнения подов. По истечении этого времени все поды Job завершаются. Приоритет .spec.activeDeadlineSeconds выше, чем у .spec.backoffLimit. То есть, если Job достигает .spec.activeDeadlineSeconds, spec.backoffLimit игнорируется.
В зависимости от настроек .spec.completions и .spec.Parallelism Jobs делятся на типы:
Тип Job | Описание | Пример |
|---|---|---|
Разовые Jobs | Один под запускается один раз до успешного завершения | Миграция базы данных |
Jobs с фиксированным количеством запусков | Один под запускается до достижения указанного количества завершений | Обработка рабочей очереди подом |
Параллельные Jobs с фиксированным количеством завершений | Несколько подов запускается до достижения указанного количества завершений | Параллельная обработка рабочих очередей несколькими подами |
Параллельные Jobs | Одна или несколько подов запускаются до успешного завершения | Параллельная обработка рабочих очередей несколькими подами |
Ниже приведен пример Job, которое вычисляет π до 2000-го разряда и выводит результат.
apiVersion: batch/v1kind: Jobmetadata:name: myjobspec:completions: 50 # 50 pods need to be run to finish a job. In this example, π is printed for 50 times.parallelism: 5 # 5 pods are run in parallel.backoffLimit: 5 # The maximum number of retry times is 5.template:spec:containers:- name: piimage: perlcommand: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: Never
Описание:
apiVersion: batch/v1 — указывает версию текущего Job.
kind: Job — указывает, что текущим ресурсом является Job.
restartPolicy: Never — указывает текущую политику перезапуска. Для Job этот параметр может быть установлен только в значении «Never» или «OnFailure».
Запустите Job, введите:
[root@k8s-master k8s]# kubectl apply -f myjob.yamljob.batch/myjob created
Посмотрите информацию о Job, введите kubectl get job:
[root@k8s-master k8s]# kubectl get jobNAME COMPLETIONS DURATION AGEmyjob 50/50 23s 3m45s
Если значение COMPLETIONS равно 50/50, Job выполнен успешно.
Запросите статус пода, введите kubectl get pod:
[root@k8s-master k8s]# kubectl get podNAME READY STATUS RESTARTS AGEmyjob-29qlw 0/1 Completed 0 4m5s...Если статус "Completed", Job завершен.
Просмотрите логи пода, введите kubectl logs:
# kubectl logs myjob-29qlw3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901
Операция | Описание |
|---|---|
Изменение YAML-файла | Чтобы изменить YAML-файл, нажмите More → Edit YAML рядом с названием Job. |
Удаление Job |
Удаленные Jobs нельзя восстановить. Соблюдайте осторожность при выполнении этой операции. |