Spec-Zone.ru › Kubernetes

Задание

Job представляет конфигурацию одного задания.
Документация по концепции Job
  • Задания

    Задания представляют собой разовые задачи, которые выполняются до завершения, а затем останавливаются.

    1. Запуск примера Job
    2. Создание спецификации Job
    3. Интеграция с API рабочих нагрузок
    4. Обработка сбоев Pod и контейнеров
    5. Политика успешного выполнения
    6. Завершение и очистка Job
    7. Автоматическая очистка завершённых заданий
    8. Шаблоны Job
    9. Расширенное использование
    10. Альтернативы
    11. Что дальше

apiVersion: batch/v1

import "k8s.io/api/batch/v1"

Job

Job представляет конфигурацию одного задания.

Поле Описание
apiVersion
string
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind
string
Kind — это строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Изменение не допускается. Используется CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ObjectMeta
Стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec
JobSpec
Спецификация желаемого поведения задания. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status
JobStatus
Текущий статус задания. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

JobSpec

JobSpec описывает, как будет выполняться задание.

Поле Описание
activeDeadlineSeconds
integer
Задаёт длительность в секундах относительно startTime, в течение которой задание может непрерывно оставаться активным до того, как система попытается его завершить; значение должно быть положительным целым числом. Если Job при создании или обновлении приостанавливается, этот таймер фактически останавливается и сбрасывается при возобновлении Job.
backoffLimit
integer
Задаёт число повторных попыток до того, как задание будет помечено как неудачное. По умолчанию равно 6, если не задан backoffLimitPerIndex (только для индексированной Job). Если задан backoffLimitPerIndex, значение backoffLimit по умолчанию равно 2147483647.
backoffLimitPerIndex
integer
Задаёт предел числа повторных попыток для одного индекса до того, как этот индекс будет помечен как неудачный. Если параметр включён, число сбоев для каждого индекса сохраняется в аннотации Pod batch.kubernetes.io/job-index-failure-count. Его можно задать только при Job с completionMode=Indexed и политике перезапуска Pod Never. Поле неизменяемо.
completionMode
string
completionMode указывает, как отслеживается завершение Pod. Возможные значения: `NonIndexed` (по умолчанию) или `Indexed`. `NonIndexed` означает, что Job считается завершённой, когда успешно завершились .spec.completions Pod. Завершения каждого Pod эквивалентны друг другу. `Indexed` означает, что Pod задания получают соответствующий индекс завершения от 0 до (.spec.completions - 1), доступный в аннотации batch.kubernetes.io/job-completion-index. Job считается завершённой, когда для каждого индекса успешно завершился один Pod. Если задано значение `Indexed`, необходимо указать .spec.completions, а `.spec.parallelism` должно быть меньше или равно 10^5. Кроме того, имя Pod имеет вид `$(job-name)-$(index)-$(random-string)`, а имя хоста Pod — `$(job-name)-$(index)`. В будущем могут быть добавлены другие режимы завершения. Если контроллер Job обнаруживает незнакомый ему режим, что возможно при обновлении из-за несовпадения версий, контроллер пропускает обновления Job.

Возможные значения перечисления:
- `"Indexed"` — режим завершения Job. В этом режиме Pod задания получают соответствующий индекс завершения от 0 до (.spec.completions - 1). Job считается завершённой, когда для каждого индекса завершения успешно завершается Pod.
- `"NonIndexed"` — режим завершения Job. В этом режиме Job считается завершённой, когда успешно завершились .spec.completions Pod. Завершения Pod эквивалентны друг другу.
completions
integer
Задаёт желаемое число успешно завершённых Pod, с которым должно выполняться задание. Значение null означает, что успешное завершение любого Pod сигнализирует об успехе всех Pod и допускает любое положительное значение параллелизма. Значение 1 означает, что параллелизм ограничен 1, а успешное завершение этого Pod сигнализирует об успешном выполнении задания. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
managedBy
string
Поле ManagedBy указывает контроллер, управляющий Job. Контроллер Job в k8s согласует задания, у которых это поле отсутствует или имеет зарезервированное значение `kubernetes.io/job-controller`, но пропускает согласование Job с пользовательским значением этого поля. Значение должно быть допустимым путём с префиксом домена (например, acme.io/foo): все символы до первого "/" должны составлять допустимый поддомен согласно RFC 1123. Все символы после первого "/" должны быть допустимыми символами пути HTTP согласно RFC 3986. Значение не может превышать 63 символа. Это поле неизменяемо.
manualSelector
boolean
manualSelector управляет генерацией меток Pod и селекторов Pod. Не задавайте `manualSelector`, если не уверены в своих действиях. Если значение false или не задано, система выбирает уникальные для этого задания метки и добавляет их в шаблон Pod. Если значение true, пользователь отвечает за выбор уникальных меток и задание селектора. Выбор неуникальной метки может привести к неправильной работе этого и других заданий. Однако `manualSelector=true` может встречаться в заданиях, созданных с помощью старого API `extensions/v1beta1`. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
maxFailedIndexes
integer
Задаёт максимальное число неудачных индексов, после превышения которого Job будет помечена как неудачная, если задан backoffLimitPerIndex. Как только число неудачных индексов превысит это значение, вся Job будет помечена как Failed, а её выполнение будет прекращено. Если значение не задано (null), задание продолжит выполнение всех индексов и будет помечено условием Job `Complete`. Его можно задать только при наличии backoffLimitPerIndex. Значение может быть null или не превышать completions. Оно обязательно и должно быть меньше или равно 10^4, если completions больше 10^5.
parallelism
integer
Задаёт максимальное желаемое число Pod, которые задание должно запускать в любой момент времени. Фактическое число работающих Pod в установившемся состоянии будет меньше этого значения, если ((.spec.completions - .status.successful) \< .spec.parallelism), то есть когда оставшийся объём работы меньше максимального параллелизма. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
podFailurePolicy
PodFailurePolicy
Задаёт политику обработки неудачных Pod. В частности, позволяет указать набор действий и условий, которые должны быть выполнены для применения соответствующего действия. Если поле пусто, применяется поведение по умолчанию: счётчик неудачных Pod, представленный полем .status.failed объекта jobs, увеличивается и проверяется относительно backoffLimit. Это поле нельзя использовать вместе с restartPolicy=OnFailure.
podReplacementPolicy
string
podReplacementPolicy указывает, когда создавать Pod на замену. Возможные значения: - TerminatingOrFailed означает, что Pod пересоздаются, когда они завершаются (имеют metadata.deletionTimestamp) или завершились с ошибкой. - Failed означает, что перед созданием Pod на замену нужно дождаться полного завершения ранее созданного Pod (фаза Failed или Succeeded). При использовании podFailurePolicy допускается только значение Failed. Если podFailurePolicy не используется, допустимы TerminatingOrFailed и Failed.

Возможные значения перечисления:
- `"Failed"` означает, что перед созданием Pod на замену нужно дождаться полного завершения ранее созданного Pod (фаза Failed или Succeeded).
- `"TerminatingOrFailed"` означает, что Pod пересоздаются, когда они завершаются (имеют metadata.deletionTimestamp) или завершились с ошибкой.
selector
LabelSelector
Запрос меток для Pod, которые должны соответствовать числу Pod. Обычно это поле задаётся системой. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
successPolicy
SuccessPolicy
successPolicy задаёт политику, определяющую, когда Job можно объявить успешно выполненной. Если поле пусто, применяется поведение по умолчанию: Job объявляется успешно выполненной, только когда число успешно завершившихся Pod равно completions. Если поле задано, оно должно быть неизменяемым и применяется только к индексированным Job. После выполнения условий SuccessPolicy оставшиеся Pod завершаются.
suspend
boolean
suspend указывает, должен ли контроллер Job создавать Pod. Если Job создаётся со значением suspend true, контроллер Job не создаёт Pod. Если Job приостанавливается после создания (то есть флаг меняется с false на true), контроллер Job удаляет все активные Pod, связанные с этой Job. Пользователи должны проектировать рабочую нагрузку с учётом необходимости корректной обработки этой ситуации. Приостановка Job сбрасывает поле StartTime, фактически сбрасывая также таймер ActiveDeadlineSeconds. По умолчанию false.
template *
PodTemplateSpec
Описывает Pod, который будет создан при выполнении задания. Допустимы только значения template.spec.restartPolicy "Never" или "OnFailure". Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
ttlSecondsAfterFinished
integer
ttlSecondsAfterFinished ограничивает время существования Job после завершения выполнения (Complete или Failed). Если это поле задано, по истечении ttlSecondsAfterFinished после завершения Job она может быть автоматически удалена. При удалении Job будут соблюдены гарантии её жизненного цикла (например, finalizers). Если поле не задано, Job не будет удалена автоматически. Если поле задано равным нулю, Job можно удалить сразу после её завершения.

JobStatus

JobStatus представляет текущее состояние Job.

Поле Описание
active
integer
Число ожидающих и работающих Pod, которые не завершаются (не имеют deletionTimestamp). Для завершённых заданий значение равно нулю.
completedIndexes
string
completedIndexes содержит завершённые индексы, если .spec.completionMode = "Indexed", в текстовом формате. Индексы представлены десятичными целыми числами, разделёнными запятыми. Числа перечислены в порядке возрастания. Три и более последовательных числа сокращаются: указываются первый и последний элементы последовательности, разделённые дефисом. Например, если завершённые индексы — 1, 3, 4, 5 и 7, они представлены как "1,3-5,7".
completionTime
Time
Время завершения задания. Не гарантируется, что оно будет установлено в порядке happens-before при отдельных операциях. Представлено в формате RFC3339 и указано по UTC. Время завершения устанавливается только при успешном завершении задания. Это значение нельзя обновить или удалить. Оно указывает на тот же или более поздний момент времени, чем поле startTime.
conditions
JobCondition array
стратегия исправления: объединение по ключу type
Последние доступные наблюдения текущего состояния объекта. При сбое Job одно из условий будет иметь тип "Failed" и статус true. При приостановке Job одно из условий будет иметь тип "Suspended" и статус true; при возобновлении Job статус этого условия станет false. При завершении Job одно из условий будет иметь тип "Complete" и статус true. Задание считается завершённым, если оно находится в одном из терминальных состояний: "Complete" или "Failed". Job не может одновременно иметь условия "Complete" и "Failed". Кроме того, она не может одновременно находиться в состояниях "Complete" и "FailureTarget". Условия "Complete", "Failed" и "FailureTarget" нельзя отключить. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
failed
integer
Число Pod, перешедших в фазу Failed. Значение монотонно возрастает.
failedIndexes
string
FailedIndexes содержит неудачные индексы, если задан spec.backoffLimitPerIndex. Индексы представлены в текстовом формате, аналогичном полю `completedIndexes`: десятичные целые числа разделены запятыми. Числа перечислены в порядке возрастания. Три и более последовательных числа сокращаются: указываются первый и последний элементы последовательности, разделённые дефисом. Например, если неудачные индексы — 1, 3, 4, 5 и 7, они представлены как "1,3-5,7". Набор неудачных индексов не может пересекаться с набором завершённых индексов.
ready
integer
Число активных Pod, у которых есть условие Ready и которые не завершаются (не имеют deletionTimestamp).
startTime
Time
Время, когда контроллер Job начал обработку задания. Если Job создана в приостановленном состоянии, это поле не устанавливается до её первого возобновления. Поле сбрасывается при каждом возобновлении Job после приостановки. Представлено в формате RFC3339 и указано по UTC. После установки поле можно удалить, только если задание приостановлено. Это поле нельзя изменить, пока задание не приостановлено или уже завершено.
succeeded
integer
Число Pod, перешедших в фазу Succeeded. Для заданной спецификации значение монотонно возрастает. Однако оно может уменьшиться в ответ на уменьшение масштаба эластичных индексированных заданий.
terminating
integer
Число Pod, которые завершаются (находятся в фазе Pending или Running и имеют deletionTimestamp). Это поле относится к бета-уровню. Контроллер Job заполняет его, если включён feature gate JobPodReplacementPolicy (включён по умолчанию).
uncountedTerminatedPods
UncountedTerminatedPods
uncountedTerminatedPods содержит UID Pod, которые завершились, но ещё не учтены контроллером Job в счётчиках статуса. Контроллер Job создаёт Pod с finalizer. При завершении Pod (успешном или неудачном) контроллер выполняет три шага, чтобы учесть его в статусе Job: 1. Добавляет UID Pod в массивы этого поля. 2. Удаляет finalizer Pod. 3. Удаляет UID Pod из массивов и увеличивает соответствующий счётчик. Старые задания могут не отслеживаться с помощью этого поля; в таком случае его значение остаётся null. Для завершённых заданий структура пуста.

JobList

JobList — это коллекция заданий.

Поле Описание
apiVersion
string
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
items *
Job array
items — это список Job.
kind
string
Kind — это строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Изменение не допускается. Используется CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ListMeta
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

JobCondition

JobCondition описывает текущее состояние задания.

Поле Описание
lastProbeTime
Time
Время последней проверки условия.
lastTransitionTime
Time
Время последнего перехода условия из одного статуса в другой.
message
string
Понятное человеку сообщение с подробностями о последнем переходе.
reason
string
(краткая) причина последнего перехода условия.
status *
string
Статус условия: True, False или Unknown.
type *
string
Тип условия Job: Complete или Failed.

PodFailurePolicy

PodFailurePolicy описывает, как сбои Pod влияют на backoffLimit.

Поле Описание
rules *
PodFailurePolicyRule array
Список правил политики сбоев Pod. Правила проверяются по порядку. Как только правило совпадает со сбоем Pod, остальные правила игнорируются. Если ни одно правило не совпадает со сбоем Pod, применяется поведение по умолчанию: счётчик сбоев Pod увеличивается и проверяется относительно backoffLimit. Допускается не более 20 элементов.

PodFailurePolicyOnExitCodesRequirement

PodFailurePolicyOnExitCodesRequirement описывает требования к обработке сбоя Pod на основе кодов завершения его контейнеров. В частности, выполняется поиск .state.terminated.exitCode для каждого контейнера приложения и init-контейнера в статусах, представленных полями .status.containerStatuses и .status.initContainerStatuses в статусе Pod соответственно. Контейнеры, завершившиеся успешно (код завершения 0), исключаются из проверки требований.

Поле Описание
containerName
string
Ограничивает проверку кодов завершения контейнером с указанным именем. Если значение равно null, правило применяется ко всем контейнерам. Если оно задано, должно совпадать с именем одного из контейнеров или init-контейнеров в шаблоне Pod.
operator *
string
Определяет отношение между кодами завершения контейнера и указанными значениями. Контейнеры, завершившиеся успешно (код завершения 0), исключаются из проверки требований. Возможные значения: - In: требование выполнено, если хотя бы один код завершения контейнера (их может быть несколько, если поле 'containerName' не ограничивает проверку одним контейнером) входит в набор указанных значений. - NotIn: требование выполнено, если хотя бы один код завершения контейнера (их может быть несколько, если поле 'containerName' не ограничивает проверку одним контейнером) не входит в набор указанных значений. В будущем могут быть добавлены дополнительные значения. Клиенты должны считать требование невыполненным при неизвестном операторе.

Возможные значения перечисления:
- `"In"`
- `"NotIn"`
values *
integer array
Задаёт набор значений. Каждый полученный код завершения контейнера (их может быть несколько при наличии нескольких контейнеров) проверяется относительно этого набора с учётом оператора. Список значений должен быть упорядочен и не должен содержать дубликатов. Значение '0' нельзя использовать с оператором In. Требуется как минимум один элемент. Допускается не более 255 элементов.

PodFailurePolicyOnPodConditionsPattern

PodFailurePolicyOnPodConditionsPattern описывает шаблон для сопоставления с фактическим типом условия Pod.

Поле Описание
status
string
Задаёт требуемый статус условия Pod. Для совпадения с условием Pod указанный статус должен совпадать со статусом условия Pod. По умолчанию True.
type *
string
Задаёт требуемый тип условия Pod. Для совпадения с условием Pod указанный тип должен совпадать с типом условия Pod.

PodFailurePolicyRule

PodFailurePolicyRule описывает обработку сбоя Pod при выполнении требований. В каждом правиле можно использовать либо onExitCodes, либо onPodConditions, но не оба поля одновременно.

Поле Описание
action *
string
Задаёт действие при сбое Pod, если требования выполнены. Возможные значения: - FailJob: Job этого Pod помечается как Failed, а все работающие Pod завершаются. - FailIndex: индекс этого Pod помечается как Failed и не будет запущен повторно. - Ignore: счётчик .backoffLimit не увеличивается, и создаётся Pod на замену. - Count: Pod обрабатывается стандартным способом — счётчик .backoffLimit увеличивается. В будущем могут быть добавлены дополнительные значения. Клиенты должны пропускать правило, если действие неизвестно.

Возможные значения перечисления:
- `"Count"` — действие, применяемое при сбое Pod: сбой обрабатывается стандартным способом, то есть увеличивается счётчик .backoffLimit, представленный полем .status.failed объекта Job.
- `"FailIndex"` — действие, применяемое при сбое Pod: индекс Job помечается как неудачный, чтобы избежать повторных запусков для этого индекса. Это действие можно использовать только при заданном backoffLimitPerIndex.
- `"FailJob"` — действие, применяемое при сбое Pod: Job этого Pod помечается как Failed, а все работающие Pod завершаются.
- `"Ignore"` — действие, применяемое при сбое Pod: счётчик .backoffLimit, представленный полем .status.failed объекта Job, не увеличивается, и создаётся Pod на замену.
onExitCodes
PodFailurePolicyOnExitCodesRequirement
Представляет требование к кодам завершения контейнеров.
onPodConditions
PodFailurePolicyOnPodConditionsPattern array
Представляет требование к условиям Pod. Требование задаётся списком шаблонов условий Pod. Требование выполнено, если хотя бы один шаблон совпадает с фактическим условием Pod. Допускается не более 20 элементов.

SuccessPolicy

SuccessPolicy описывает, когда Job можно объявить успешно выполненной на основании успешного завершения некоторых индексов.

Поле Описание
rules *
SuccessPolicyRule array
rules представляет список альтернативных правил, по которым Job можно объявить успешно выполненной до того, как `.status.succeeded >= .spec.completions`. Как только выполняется любое из правил, добавляется условие "SuccessCriteriaMet", а оставшиеся Pod удаляются. Терминальное состояние такой Job — условие "Complete". Кроме того, правила проверяются по порядку; как только Job удовлетворяет одному из них, остальные правила игнорируются. Допускается не более 20 элементов.

SuccessPolicyRule

SuccessPolicyRule описывает правило объявления Job успешно выполненной. Каждое правило должно задавать хотя бы одно из полей "succeededIndexes" или "succeededCount".

Поле Описание
succeededCount
integer
succeededCount задаёт минимальный требуемый размер фактического набора успешно завершённых индексов Job. Если succeededCount используется вместе с succeededIndexes, проверка ограничивается только набором индексов, указанным в succeededIndexes. Например, если succeededIndexes равно "1-4", succeededCount равно "3", а завершённые индексы — "1", "3" и "5", Job не объявляется успешно выполненной, поскольку в этом правиле учитываются только индексы "1" и "3". Если значение этого поля равно null, оно не получает значение по умолчанию и никогда не проверяется. Если поле задано, значение должно быть положительным целым числом.
succeededIndexes
string
succeededIndexes задаёт набор индексов, которые должны содержаться в фактическом наборе успешно завершённых индексов Job. Индексы должны находиться в диапазоне от 0 до ".spec.completions-1" и не должны содержать дубликатов. Требуется как минимум один элемент. Индексы представлены интервалами, разделёнными запятыми. Интервал может быть десятичным целым числом или парой десятичных целых чисел, разделённых дефисом. Числа представлены первым и последним элементами последовательности, разделёнными дефисом. Например, если завершённые индексы — 1, 3, 4, 5 и 7, они представлены как "1,3-5,7". Если значение этого поля равно null, оно не получает значение по умолчанию и никогда не проверяется.

UncountedTerminatedPods

UncountedTerminatedPods содержит UID Pod, которые завершились, но ещё не учтены в счётчиках статуса Job.

Поле Описание
failed
string array
failed содержит UID неудачно завершившихся Pod.
succeeded
string array
succeeded содержит UID успешно завершившихся Pod.

© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/batch/job-v1/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API