Задача
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, который будет создан при выполнении задачи. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
-
parallelism (int32)
Указывает максимальное желаемое количество pod, которые должна запускать задача в любой момент времени. Фактическое количество работающих pod в установившемся режиме будет меньше этого значения, когда ((.spec.completions - .status.successful) < .spec.parallelism), т.е. когда оставшаяся работа меньше максимального параллелизма. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
Lifecycle
-
completions (int32)
Указывает желаемое количество успешно завершенных pod, с которыми должна выполняться задача. Установка в значение nil означает, что успешное завершение любого pod сигнализирует об успехе всех pod и позволяет параллелизму иметь любое положительное значение. Установка в 1 означает, что параллелизм ограничен 1, и успешное завершение этого pod сигнализирует об успехе задачи. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
-
completionMode (string)
CompletionMode определяет, как отслеживаются завершения Pod. Он может быть
NonIndexed(по умолчанию) илиIndexed.NonIndexedозначает, что задача считается завершенной, когда было .spec.completions успешно завершенных Pod. Каждое завершение Pod гомологично друг другу.Indexedозначает, что Pod задачи получают связанный индекс завершения от 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)
Указывает продолжительность в секундах относительно времени начала, в течение которой задача может непрерывно быть активной, прежде чем система попытается завершить ее; значение должно быть положительным целым числом. Если задача приостановлена (при создании или с помощью обновления), этот таймер фактически будет остановлен и сброшен, когда задача возобновится.
-
ttlSecondsAfterFinished (int32)
ttlSecondsAfterFinished ограничивает срок действия задачи, которая завершила выполнение (либо завершена успешно, либо завершена неудачно). Если этот параметр установлен, ttlSecondsAfterFinished после завершения задачи, она может быть автоматически удалена. При удалении задачи будут соблюдаться ее гарантии жизненного цикла (например, финализаторы). Если этот параметр не установлен, задача не будет автоматически удалена. Если этот параметр установлен в ноль, задача становится доступной для удаления сразу после завершения.
-
suspend (boolean)
Suspend определяет, должен ли контроллер задач создавать Pod или нет. Если задача создается с suspend, установленным в true, контроллер задач не создает Pod. Если задача приостановлена после создания (т.е. флаг меняется с false на true), контроллер задач удалит все активные Pod, связанные с этой задачей. Пользователи должны разработать свои рабочие нагрузки, чтобы правильно обработать это. Приостановление задачи сбросит поле StartTime задачи, что, в свою очередь, сбросит таймер ActiveDeadlineSeconds.
Selector
-
selector (LabelSelector)
Запрос меток по pod, которые должны соответствовать подсчету pod. Обычно система устанавливает это поле за вас. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
-
manualSelector (boolean)
manualSelector управляет генерацией меток pod и селекторов pod. Оставьте
manualSelectorне заданным, если вы не уверены, что делаете. Если значение false или не задано, система выбирает метки, уникальные для этой задачи, и добавляет эти метки к шаблону pod. Если значение true, пользователь отвечает за выбор уникальных меток и указание селектора. Невозможность выбора уникальной метки может привести к тому, что эта задача и другие задачи не будут работать правильно. Однако вы можете увидетьmanualSelector=trueв задачах, которые были созданы с помощью старогоextensions/v1beta1API. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
Уровень Alpha
-
podFailurePolicy (PodFailurePolicy)
Определяет политику обработки завершившихся сбоем подов. В частности, она позволяет указать набор действий и условий, которые должны быть выполнены для выполнения соответствующего действия. Если поле пусто, применяется поведение по умолчанию — счётчик завершившихся сбоем подов, представленный полем .status.failed задачи, увеличивается, и его значение сравнивается с backoffLimit. Это поле нельзя использовать совместно с restartPolicy=OnFailure.
Это поле находится на стадии альфа-версии. Для использования этого поля необходимо включить
JobPodFailurePolicyфункцию (по умолчанию отключена).PodFailurePolicy описывает, как завершившиеся сбоем поды влияют на backoffLimit.
-
podFailurePolicy.rules ([]PodFailurePolicyRule), требуется
Атомарно: будет заменено при слиянии
Список правил политики обработки сбоев подов. Правила оцениваются в порядке следования. Как только правило соответствует сбою подо, остальные правила игнорируются. Если ни одно правило не соответствует сбою подо, применяется поведение по умолчанию — счётчик сбоев подов увеличивается и сравнивается с backoffLimit. Максимально разрешено 20 элементов.
PodFailurePolicyRule описывает, как обрабатывается сбой подо, когда требования выполнены. В каждом правиле можно использовать либо OnExitCodes, либо onPodConditions, но не оба.
-
podFailurePolicy.rules.action (строка), требуется
Определяет действие, выполняемое при сбое подо, когда выполнены условия. Возможные значения:
- FailJob: указывает, что задача подо отмечается как Failed, и все запущенные поды завершаются.
- Ignore: указывает, что счётчик по отношению к .backoffLimit не увеличивается, и создаётся подменный под.
- Count: указывает, что под обрабатывается по умолчанию — счётчик по отношению к .backoffLimit увеличивается. В будущем могут быть добавлены дополнительные значения. Клиенты должны пропускать правило при неизвестном действии.
-
podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern), требуется
Атомарно: будет заменено при слиянии
Представляет требования к состояниям подо. Требование представлено как список шаблонов состояния подо. Требование выполняется, если хотя бы один шаблон соответствует фактическому состоянию подо. Максимально разрешено 20 элементов.
PodFailurePolicyOnPodConditionsPattern описывает шаблон для сопоставления фактического типа состояния подо.
-
podFailurePolicy.rules.onPodConditions.status (строка), требуется
Указывает требуемое состояние условия подо. Для соответствия условию подо необходимо, чтобы указанное состояние совпадало со статусом условия подо. По умолчанию True.
-
podFailurePolicy.rules.onPodConditions.type (строка), требуется
Указывает требуемый тип условия подо. Для соответствия условию подо необходимо, чтобы указанный тип совпадал с типом условия подо.
-
-
podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)
Представляет требования к кодам завершения контейнеров.
PodFailurePolicyOnExitCodesRequirement описывает требование к обработке завершившегося сбоем подо на основе кодов завершения его контейнеров. В частности, он ищет .state.terminated.exitCode для каждого статуса контейнера приложения и инициализации, представленных полями .status.containerStatuses и .status.initContainerStatuses в состоянии подо соответственно. Контейнеры, завершившиеся успешно (код выхода 0), исключаются из проверки требования.
-
podFailurePolicy.rules.onExitCodes.operator (строка), требуется
Представляет отношение между кодом(ами) завершения контейнера и указанными значениями. Контейнеры, завершившиеся успешно (код выхода 0), исключаются из проверки требования. Возможные значения:
- In: требование выполняется, если хотя бы один код выхода контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') входит в набор указанных значений.
- NotIn: требование выполняется, если хотя бы один код выхода контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') не входит в набор указанных значений. В будущем могут быть добавлены дополнительные значения. Клиенты должны отреагировать на неизвестный оператор, предположив, что требование не выполняется.
-
podFailurePolicy.rules.onExitCodes.values ([]int32), требуется
Множество: уникальные значения сохраняются при слиянии
Определяет множество значений. Каждый возвращаемый код завершения контейнера (может быть несколько в случае нескольких контейнеров) проверяется относительно этого множества значений с учётом оператора. Список значений должен быть упорядоченным и не должен содержать дубликатов. Значение '0' не может быть использовано для оператора In. Требуется как минимум один элемент. Максимально разрешено 255 элементов.
-
podFailurePolicy.rules.onExitCodes.containerName (строка)
Ограничивает проверку кодов выхода контейнером с указанным именем. Если значение null, правило применяется ко всем контейнерам. При указании оно должно совпадать с одним из имён контейнеров или initContainer в шаблоне подо.
-
-
-
JobStatus
JobStatus представляет текущее состояние задачи.
-
startTime (Time)
Представляет время, когда контроллер задач начал обработку задачи. Когда задача создаётся в приостановленном состоянии, это поле не устанавливается до первого возобновления. Это поле сбрасывается каждый раз, когда задача возобновляется из состояния приостановки. Оно представлено в формате RFC3339 и в UTC.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет времени.
-
completionTime (Time)
Представляет время завершения задачи. Не гарантируется, что он будет установлен в порядке "происходит до" для отдельных операций. Он представлен в формате RFC3339 и в UTC. Время завершения устанавливается только при успешном завершении задачи.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет времени.
-
active (int32)
Количество ожидающих и запущенных подов.
-
failed (int32)
Количество подов, достигших состояния Failed.
-
succeeded (int32)
Количество подов, достигших состояния Succeeded.
-
completedIndexes (строка)
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 (строка), требуется
Статус условия, одно из True, False, Unknown.
-
conditions.type (строка), требуется
Тип условия задачи, Complete или Failed.
-
conditions.lastProbeTime (Time)
Последнее время проверки условия.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет времени.
-
conditions.lastTransitionTime (Time)
Последнее время перехода условия из одного статуса в другой.
Time — это оболочка вокруг time.Time, которая поддерживает правильную сериализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет времени.
-
conditions.message (строка)
Читаемое человеком сообщение, содержащее подробности о последнем переходе.
-
conditions.reason (строка)
(краткое) обоснование последнего перехода условия.
-
-
uncountedTerminatedPods (UncountedTerminatedPods)
UncountedTerminatedPods хранит идентификаторы подов, которые завершились, но контроллер задач ещё не учел их в счётчиках статуса.
Контроллер задач создаёт поды с finalizer. Когда под завершается (успешно или неудачно), контроллер выполняет три шага для учёта этого в статусе задачи: (1) Добавляет UID подо в массивы в этом поле. (2) Удаляет finalizer подо. (3) Удаляет UID подо из массивов, увеличивая соответствующий счётчик.
Старые задачи могут не отслеживаться с помощью этого поля, в этом случае поле остаётся null.
UncountedTerminatedPods хранит идентификаторы подов, которые завершились, но не были учтены в счётчиках состояния задачи.
-
uncountedTerminatedPods.failed ([]string)
Множество: уникальные значения сохраняются при слиянии
Failed хранит UID завершившихся неудачно подов.
-
uncountedTerminatedPods.succeeded ([]string)
Множество: уникальные значения сохраняются при слиянии
Succeeded хранит UID завершившихся успешно подов.
-
Уровень бета-версии
-
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-26.docs.kubernetes.io/docs/reference/kubernetes-api/workload-resources/job-v1/