Задача
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
Задача
Задача представляет конфигурацию одной задачи.
-
apiVersion: batch/v1
-
kind: Задача
-
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 описывает, как будет выглядеть выполнение задачи.
Replicas
-
template (PodTemplateSpec), требуется
Описывает pod, который будет создан при выполнении задачи. Разрешены только значения template.spec.restartPolicy "Never" или "OnFailure". Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
-
parallelism (int32)
Указывает максимальное желаемое количество pods, которые должна выполнять задача в любой момент времени. Фактическое количество работающих pods в стабильном состоянии будет меньше этого числа, когда ((.spec.completions - .status.successful) < .spec.parallelism), т.е. когда оставшаяся работа меньше максимального уровня параллелизма. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
Lifecycle
-
completions (int32)
Указывает желаемое количество успешно завершенных pods, с которыми должна выполняться задача. Установка в null означает, что успех любого pod сигнализирует об успехе всех pods, и позволяет параллелизму иметь любое положительное значение. Установка в 1 означает, что параллелизм ограничен 1, и успех этого pod сигнализирует об успехе задачи. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
-
completionMode (string)
completionMode определяет, как отслеживаются завершения Pod. Он может быть
NonIndexed(по умолчанию) илиIndexed.NonIndexedозначает, что Задача считается завершенной, когда было выполнено .spec.completions успешно завершенных Pods. Каждое завершение Pod аналогично друг другу.Indexedозначает, что Pods задачи получают связанный индекс завершения от 0 до (.spec.completions - 1), доступный в аннотации batch.kubernetes.io/job-completion-index. Задача считается завершенной, когда для каждого индекса есть один успешно завершенный Pod. Когда значениеIndexed, .spec.completions должно быть указано и.spec.parallelismдолжно быть меньше или равно 10^5. Кроме того, имя Pod принимает вид$(job-name)-$(index)-$(random-string), имя хоста Pod принимает вид$(job-name)-$(index).В будущем могут быть добавлены другие режимы завершения. Если контроллер задач обнаруживает режим, который он не распознает, что возможно во время обновлений из-за несовпадения версий, контроллер пропускает обновления для задачи.
-
backoffLimit (int32)
Указывает количество повторных попыток перед пометкой этой задачи как завершенной с ошибкой. По умолчанию 6
-
activeDeadlineSeconds (int64)
Указывает продолжительность в секундах относительно startTime, в течение которой задача может непрерывно выполняться, прежде чем система попытается ее завершить; значение должно быть положительным целым числом. Если Задача приостановлена (при создании или через обновление), этот таймер фактически будет остановлен и сброшен, когда Задача снова будет возобновлена.
-
ttlSecondsAfterFinished (int32)
ttlSecondsAfterFinished ограничивает время жизни задачи, которая завершила выполнение (полностью или с ошибкой). Если этот параметр установлен, ttlSecondsAfterFinished после завершения задачи, она может быть автоматически удалена. При удалении задачи будут соблюдаться ее гарантии жизненного цикла (например, финализаторы). Если этот параметр не установлен, задача не будет автоматически удалена. Если этот параметр установлен в ноль, задача становится пригодной для удаления сразу после завершения.
-
suspend (boolean)
suspend определяет, должен ли контроллер задач создавать pods или нет. Если задача создана с suspend, установленным в true, контроллер задач не создает pods. Если задача приостанавливается после создания (т.е. флаг переходит от false к true), контроллер задач удалит все активные pods, связанные с этой задачей. Пользователи должны разработать свою рабочую нагрузку так, чтобы она могла корректно обработать это. Приостановление задачи сбросит поле StartTime задачи, фактически сбросив таймер ActiveDeadlineSeconds тоже. По умолчанию false.
Selector
-
selector (LabelSelector)
Запрос меток над pods, которые должны соответствовать счету pods. Обычно система устанавливает это поле для вас. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
-
manualSelector (boolean)
manualSelector управляет генерацией меток pods и селекторов pods. Оставьте
manualSelectorне установленным, если вы не уверены, что делаете. Когда false или не установлено, система выбирает метки, уникальные для этой задачи, и добавляет эти метки к шаблону pod. Когда true, пользователь отвечает за выбор уникальных меток и указание селектора. Отсутствие уникальной метки может привести к тому, что эта и другие задачи не будут работать правильно. Однако, вы можете увидетьmanualSelector=trueв задачах, которые были созданы с помощью старогоextensions/v1beta1API. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
Beta level
-
podFailurePolicy (PodFailurePolicy)
Указывает политику обработки поддоов с ошибками. В частности, позволяет указать набор действий и условий, которые должны быть выполнены для выполнения соответствующего действия. Если пусто, применяется поведение по умолчанию — увеличивается счётчик поддоов с ошибками, представленный полем .status.failed задания, и он проверяется на предмет превышения backoffLimit. Это поле нельзя использовать в сочетании с restartPolicy=OnFailure.
Это поле находится на уровне бета-версии. Оно может использоваться, когда включена функция
JobPodFailurePolicy(включена по умолчанию).PodFailurePolicy описывает, как поддовы с ошибками влияют на backoffLimit.
-
podFailurePolicy.rules ([]PodFailurePolicyRule), необходимо
Атомарно: будет заменено при слиянии
Список правил политики поддоов с ошибками. Правила оцениваются в порядке следования. После того, как правило соответствует ошибке поддова, оставшиеся правила игнорируются. Если ни одно правило не соответствует ошибке поддова, применяется обработка по умолчанию — увеличивается счётчик ошибок поддовов и проверяется на предмет превышения backoffLimit. Допускается не более 20 элементов.
PodFailurePolicyRule описывает, как обрабатывается ошибка поддова, когда выполнены требования. В каждом правиле может быть использован один из onExitCodes и onPodConditions, но не оба.
-
podFailurePolicy.rules.action (string), необходимо
Указывает действие, выполняемое при ошибке поддова, когда требования выполнены. Возможные значения:
- FailJob: указывает, что задание поддова помечено как Failed, и все работающие поддовы завершаются.
- Ignore: указывает, что счётчик в сторону .backoffLimit не увеличивается, и создаётся замещающий поддов.
- Count: указывает, что поддов обрабатывается стандартным способом — счётчик в сторону .backoffLimit увеличивается. Дополнительные значения могут быть добавлены в будущем. Клиенты должны реагировать на неизвестное действие, пропуская правило.
-
podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern), необходимо
Атомарно: будет заменено при слиянии
Представляет требования к условиям поддова. Требование представлено как список шаблонов условий поддова. Требование выполняется, если хотя бы один шаблон соответствует фактическому условию поддова. Допускается не более 20 элементов.
PodFailurePolicyOnPodConditionsPattern описывает шаблон для сопоставления фактического типа условия поддова.
-
podFailurePolicy.rules.onPodConditions.status (string), необходимо
Указывает требуемое состояние условия поддова. Для соответствия условию поддова необходимо, чтобы указанное состояние было равно состоянию условия поддова. По умолчанию True.
-
podFailurePolicy.rules.onPodConditions.type (string), необходимо
Указывает требуемый тип условия поддова. Для соответствия условию поддова необходимо, чтобы указанный тип был равен типу условия поддова.
-
-
podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)
Представляет требование к кодам завершения контейнера.
PodFailurePolicyOnExitCodesRequirement описывает требование к обработке поддова с ошибкой на основе кодов завершения его контейнеров. В частности, он ищет .state.terminated.exitCode для каждого контейнера приложения и контейнера инициализации, представленных соответственно полями .status.containerStatuses и .status.initContainerStatuses в состоянии поддова. Контейнеры, завершившиеся успешно (код завершения 0), исключаются из проверки требования.
-
podFailurePolicy.rules.onExitCodes.operator (string), необходимо
Представляет отношение между кодом(ами) завершения контейнера и указанными значениями. Контейнеры, завершившиеся успешно (код завершения 0), исключаются из проверки требования. Возможные значения:
- In: требование выполняется, если хотя бы один код завершения контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') находится в наборе указанных значений.
- NotIn: требование выполняется, если хотя бы один код завершения контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') не находится в наборе указанных значений. Дополнительные значения могут быть добавлены в будущем. Клиенты должны реагировать на неизвестный оператор, предполагая, что требование не выполняется.
-
podFailurePolicy.rules.onExitCodes.values ([]int32), необходимо
Множество: уникальные значения будут сохранены при слиянии
Указывает множество значений. Каждый возвращённый код завершения контейнера (может быть несколько в случае нескольких контейнеров) проверяется на соответствие этому множеству значений относительно оператора. Список значений должен быть отсортирован и не должен содержать дубликатов. Значение '0' не может использоваться для оператора In. Требуется как минимум один элемент. Допускается не более 255 элементов.
-
podFailurePolicy.rules.onExitCodes.containerName (string)
Ограничивает проверку кодов завершения контейнером с указанным именем. При null правило применяется ко всем контейнерам. При указании, оно должно совпадать с одним из имён контейнера или контейнера инициализации в шаблоне поддова.
-
-
-
JobStatus
JobStatus представляет текущее состояние задания.
-
startTime (Time)
Представляет время, когда контроллер заданий начал обработку задания. Когда задание создаётся в приостановленном состоянии, это поле не устанавливается до первого возобновления. Это поле сбрасывается каждый раз, когда задание возобновляется из приостановленного состояния. Оно представлено в формате RFC3339 и в UTC.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих функций фабрики в пакете time предоставляются оболочки.
-
completionTime (Time)
Представляет время завершения задания. Нет гарантии, что оно будет установлено в порядке следования событий между отдельными операциями. Оно представлено в формате RFC3339 и в UTC. Время завершения устанавливается только при успешном завершении задания.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих функций фабрики в пакете time предоставляются оболочки.
-
active (int32)
Количество ожидающих и выполняющихся поддоов.
-
failed (int32)
Количество поддоов, достигших фазы Failed.
-
succeeded (int32)
Количество поддоов, достигших фазы Succeeded.
-
completedIndexes (string)
completedIndexes хранит завершённые индексы, когда .spec.completionMode = "Indexed" в текстовом формате. Индексы представлены как целые десятичные числа, разделённые запятыми. Числа перечислены в порядке возрастания. Три и более последовательных числа сжимаются и представляются первым и последним элементом ряда, разделёнными дефисом. Например, если завершённые индексы — 1, 3, 4, 5 и 7, они представляются как "1,3-5,7".
-
conditions ([]JobCondition)
Стратегия исправления: слияние по ключу
typeАтомарно: будет заменено при слиянии
Последние доступные наблюдения за текущим состоянием объекта. Когда задание завершается с ошибкой, одно из условий будет иметь тип "Failed" и состояние true. Когда задание приостановлено, одно из условий будет иметь тип "Suspended" и состояние true; когда задание возобновлено, состояние этого условия станет false. Когда задание завершено, одно из условий будет иметь тип "Complete" и состояние true. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
JobCondition описывает текущее состояние задания.
-
conditions.status (string), необходимо
Состояние условия, одно из True, False, Unknown.
-
conditions.type (string), необходимо
Тип условия задания, Complete или Failed.
-
conditions.lastProbeTime (Time)
Последнее время проверки условия.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих функций фабрики в пакете time предоставляются оболочки.
-
conditions.lastTransitionTime (Time)
Последнее время перехода условия из одного состояния в другое.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Для многих функций фабрики в пакете time предоставляются оболочки.
-
conditions.message (string)
Читаемый человеком текст с указанием деталей последнего перехода.
-
conditions.reason (string)
(краткое) обоснование последнего перехода условия.
-
-
uncountedTerminatedPods (UncountedTerminatedPods)
uncountedTerminatedPods хранит идентификаторы поддоов, которые завершились, но контроллер заданий ещё не учёл их в счётчиках состояния.
Контроллер заданий создаёт поддовы с finalizer. Когда поддов завершается (успешно или с ошибкой), контроллер выполняет три шага для учёта этого в состоянии задания:
- Добавляет UID поддова в массивы в этом поле. 2. Удаляет finalizer поддова. 3. Удаляет UID поддова из массивов, одновременно увеличивая соответствующий счётчик.
Старые задания могут не отслеживаться с помощью этого поля, в этом случае поле остаётся null.
UncountedTerminatedPods хранит идентификаторы поддоов, которые завершились, но ещё не учтены в счётчиках состояния задания.
-
uncountedTerminatedPods.failed ([]string)
Множество: уникальные значения будут сохранены при слиянии
failed хранит идентификаторы завершившихся с ошибкой поддоов.
-
uncountedTerminatedPods.succeeded ([]string)
Множество: уникальные значения будут сохранены при слиянии
succeeded хранит идентификаторы успешно завершившихся поддоов.
Уровень бета-версии
-
ready (int32)
Количество поддоов, которые имеют состояние Ready.
Это поле находится на уровне бета-версии. Контроллер заданий заполняет поле, когда включена функция JobReadyPods (включена по умолчанию).
Список заданий
JobList — это набор заданий.
-
apiVersion: batch/v1
-
kind: JobList
-
metadata (ListMeta)
Стандартные метаданные списка. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
-
items ([]Job), необходимо
items — это список заданий.
© 2022 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2022 The Linux Foundation ®. All rights reserved.
https://v1-27.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/job-v1/