Spec-Zone.ru › Kubernetes

Задача

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

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 описывает, как будет выглядеть выполнение задачи.

Репликации

  • template (PodTemplateSpec), обязательно

    Описывает pod, который будет создан при выполнении задачи. Разрешены только значения template.spec.restartPolicy "Never" или "OnFailure". Дополнительная информация: 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/

Жизненный цикл

  • completions (int32)

    Указывает желаемое количество успешно завершенных pod, с которыми должна выполняться задача. Установка значения null означает, что успех любого pod сигнализирует об успехе всех pod, и позволяет параллелизму иметь любое положительное значение. Установка значения 1 означает, что параллелизм ограничен 1, и успех этого pod сигнализирует об успехе задачи. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

  • completionMode (строка)

    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)

    Указывает продолжительность в секундах относительно startTime, в течение которой задача может непрерывно работать, прежде чем система попытается завершить ее; значение должно быть положительным целым числом. Если задача приостановлена (при создании или посредством обновления), этот таймер фактически будет остановлен и сброшен при повторном возобновлении задачи.

  • ttlSecondsAfterFinished (int32)

    ttlSecondsAfterFinished ограничивает время жизни задачи, которая завершила выполнение (либо успешно, либо с ошибкой). Если это поле установлено, ttlSecondsAfterFinished после завершения задачи, она может быть автоматически удалена. При удалении задачи будут соблюдаться ее гарантии жизненного цикла (например, финализаторы). Если это поле не установлено, задача не будет автоматически удалена. Если это поле установлено в ноль, задача может быть удалена сразу после завершения.

  • suspend (логическое значение)

    suspend указывает, должен ли контроллер задач создавать pod или нет. Если задача создается со значением suspend, равным true, контроллер задач не создает pod. Если задача приостанавливается после создания (то есть флаг меняется с false на true), контроллер задач удалит все активные pod, связанные с этой задачей. Пользователи должны разработать свою рабочую нагрузку так, чтобы это обрабатывалось корректно. Приостановление задачи сбросит поле StartTime задачи, фактически сбросив таймер ActiveDeadlineSeconds тоже. По умолчанию false.

Селектор

  • selector (LabelSelector)

    Запрос меток для pod, которые должны соответствовать количеству pod. Обычно система заполняет это поле за вас. Дополнительная информация: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors

  • manualSelector (логическое значение)

    manualSelector управляет генерацией меток pod и селекторов pod. Оставьте manualSelector не установленным, если вы не уверены в своих действиях. Если значение false или не установлено, система выбирает метки, уникальные для этой задачи, и добавляет эти метки к шаблону pod. Если значение true, пользователь отвечает за выбор уникальных меток и указание селектора. Невозможность выбора уникальной метки может привести к тому, что эта и другие задачи не будут работать правильно. Однако вы можете увидеть manualSelector=true в задачах, которые были созданы с помощью старого extensions/v1beta1 API. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector

Бета-уровень

  • podFailurePolicy (PodFailurePolicy)

    Определяет политику обработки неисправных под. В частности, она позволяет указать набор действий и условий, которые должны быть выполнены для выполнения соответствующего действия. Если поле пустое, применяется поведение по умолчанию — счётчик неисправных под, представленный в поле .status.failed задачи, увеличивается, и он сравнивается с backoffLimit. Это поле нельзя использовать в сочетании с restartPolicy=OnFailure.

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

    • podFailurePolicy.rules ([]PodFailurePolicyRule), required

      Атомарно: будет заменено при слиянии

      Список правил политики обработки ошибок под. Правила оцениваются в порядке следования. Как только правило соответствует ошибке под, остальные правила игнорируются. Когда ни одно правило не соответствует ошибке под, применяется обработка по умолчанию — счётчик ошибок под увеличивается и сравнивается с backoffLimit. Разрешено не более 20 элементов.

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

      • podFailurePolicy.rules.action (string), required

        Указывает действие, выполняемое при возникновении ошибки под, когда требования выполнены. Возможные значения:

        • FailJob: указывает, что задача под помечается как Failed, и все работающие под завершаются.
        • FailIndex: указывает, что индекс под помечается как Failed и не будет перезапущен. Это значение находится на стадии бета-тестирования. Его можно использовать, когда включена функция JobBackoffLimitPerIndex, (включена по умолчанию).
        • Ignore: указывает, что счётчик для .backoffLimit не увеличивается, и создаётся замена под.
        • Count: указывает, что под обрабатывается стандартным способом — счётчик для .backoffLimit увеличивается. Дополнительные значения могут быть добавлены в будущем. Клиенты должны реагировать на неизвестное действие, пропуская правило.
      • podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)

        Представляет требование к кодам завершения контейнера.

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

        • podFailurePolicy.rules.onExitCodes.operator (string), required

          Представляет отношение между кодом(ами) завершения контейнера и указанными значениями. Контейнеры, завершившиеся успешно (код возврата 0), исключаются из проверки требования. Возможные значения:

          • In: требование выполняется, если хотя бы один код завершения контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') входит в набор указанных значений.
          • NotIn: требование выполняется, если хотя бы один код завершения контейнера (может быть несколько, если есть несколько контейнеров, не ограниченных полем 'containerName') не входит в набор указанных значений. Дополнительные значения могут быть добавлены в будущем. Клиенты должны реагировать на неизвестный оператор, предполагая, что требование не выполняется.
        • podFailurePolicy.rules.onExitCodes.values ([]int32), required

          Множество: уникальные значения сохраняются при слиянии

          Указывает набор значений. Каждый возвращённый код завершения контейнера (может быть несколько в случае нескольких контейнеров) проверяется на соответствие этому набору значений относительно оператора. Список значений должен быть упорядоченным и не должен содержать дубликатов. Значение '0' не может использоваться для оператора In. Требуется хотя бы один элемент. Разрешено не более 255 элементов.

        • podFailurePolicy.rules.onExitCodes.containerName (string)

          Ограничивает проверку кодов возврата контейнером с указанным именем. При значении null правило применяется ко всем контейнерам. При указании значения оно должно соответствовать одному из имён контейнеров или initContainer в шаблоне под.

      • podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern)

        Атомарно: будет заменено при слиянии

        Представляет требование к условиям под. Требование представлено как список шаблонов условий под. Требование выполняется, если хотя бы один шаблон соответствует фактическому условию под. Разрешено не более 20 элементов.

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

        • podFailurePolicy.rules.onPodConditions.status (string), required

          Указывает требуемый статус условия под. Для соответствия условию под требуется, чтобы указанный статус совпадал со статусом условия под. По умолчанию True.

        • podFailurePolicy.rules.onPodConditions.type (string), required

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

  • successPolicy (SuccessPolicy)

    successPolicy определяет политику, когда задача Job может быть объявлена успешной. Если поле пустое, применяется поведение по умолчанию — задача Job объявляется успешной только тогда, когда количество успешных под равно completions. Если поле указано, оно должно быть неизменяемым и работает только для задач Indexed Jobs. После того как задача Job удовлетворяет SuccessPolicy, под, которые всё ещё ожидают завершения, завершаются.

    Это поле находится на стадии бета-тестирования. Для использования этого поля необходимо включить JobSuccessPolicy функцию (включена по умолчанию).

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

    • successPolicy.rules ([]SuccessPolicyRule), required

      Атомарно: будет заменено при слиянии

      rules представляет список альтернативных правил для объявления задач Job как успешных до .status.succeeded >= .spec.completions. Как только любое из правил выполняется, состояние "SucceededCriteriaMet" добавляется, и под, которые всё ещё ожидают завершения, удаляются. Конечное состояние такой задачи Job имеет состояние "Complete". Кроме того, эти правила оцениваются в порядке следования; как только задача Job удовлетворяет одному из правил, другие правила игнорируются. Разрешено не более 20 элементов.

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

      • successPolicy.rules.succeededCount (int32)

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

      • successPolicy.rules.succeededIndexes (string)

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

Уровень alpha

  • backoffLimitPerIndex (int32)

    Определяет предел количества повторных попыток внутри индекса перед помечанием этого индекса как неисправного. При включении количество ошибок на индекс сохраняется в аннотации под batch.kubernetes.io/job-index-failure-count. Его можно установить только тогда, когда Job.completionMode=Indexed, а политика перезапуска Pod — Never. Поле неизменяемое. Это поле находится на стадии бета-тестирования. Его можно использовать, когда включена функция JobBackoffLimitPerIndex (включена по умолчанию).

  • managedBy (string)

    Поле ManagedBy указывает контроллер, который управляет задачей Job. Контроллер k8s Job обрабатывает задачи, у которых это поле вообще отсутствует или значение поля — зарезервированная строка kubernetes.io/job-controller, но пропускает обработку задач с пользовательским значением для этого поля. Значение должно быть корректным путём, начинающимся с домена (например, acme.io/foo) — все символы перед первой '/' должны быть допустимым поддоменом в соответствии с RFC 1123. Все символы после первой '/' должны быть допустимыми символами пути HTTP в соответствии с RFC 3986. Значение не может превышать 63 символа. Это поле неизменяемое.

    Это поле находится на стадии alpha-тестирования. Контроллер задач Job принимает установку поля, когда функция JobManagedBy включена (по умолчанию отключена).

  • maxFailedIndexes (int32)

    Указывает максимальное количество неисправных индексов перед помечанием задачи Job как неисправной, когда backoffLimitPerIndex установлен. После того, как количество неисправных индексов превысит это число, вся задача Job помечается как Failed, и её выполнение завершается. Если оставлено значение null, задача Job продолжает выполнение всех своих индексов и помечается состоянием Complete Job. Его можно указать только при установленном backoffLimitPerIndex. Он может быть null или до completions. Требуется и должен быть меньше или равен 10^4, если completions больше 10^5. Это поле находится на стадии бета-тестирования. Его можно использовать, когда включена функция JobBackoffLimitPerIndex (включена по умолчанию).

  • podReplacementPolicy (string)

    podReplacementPolicy определяет, когда создавать замена Pod. Возможные значения: - TerminatingOrFailed означает, что мы пересоздаём под, когда они завершаются (имеют metadata.deletionTimestamp) или неисправны.

    • Failed означает, что мы ждём, пока ранее созданный Pod полностью завершит работу (имеет фазу Failed или Succeeded) перед созданием замены Pod.

    При использовании podFailurePolicy, Failed — единственное разрешённое значение. TerminatingOrFailed и Failed являются разрешёнными значениями, когда podFailurePolicy не используется. Это поле находится на стадии бета-тестирования. Для использования необходимо включить переключатель JobPodReplacementPolicy. Он включен по умолчанию.

JobStatus

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

  • startTime (Время)

    Представляет время, когда контроллер задач начал обработку задачи. Если работа создана в приостановленном состоянии, это поле не устанавливается до первого возобновления. Это поле сбрасывается каждый раз, когда работа возобновляется из приостановленного состояния. Представлено в формате RFC3339 и находится в UTC.

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

    Время — это оболочка вокруг time.Time, которая поддерживает правильную маршализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

  • completionTime (Время завершения)

    Представляет время, когда работа была завершена. Не гарантируется, что оно устанавливается в порядке «происходит раньше» между отдельными операциями. Представлено в формате RFC3339 и находится в UTC. Время завершения устанавливается, когда работа успешно завершается, и только тогда. Значение нельзя обновлять или удалять. Значение указывает на такое же или более позднее время, чем поле startTime.

    Время — это оболочка вокруг time.Time, которая поддерживает правильную маршализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

  • active (int32)

    Количество ожидающих и выполняемых Pods, которые не завершаются (без deletionTimestamp). Значение равно нулю для завершенных задач.

  • failed (int32)

    Количество Pods, которые достигли состояния Failed. Значение увеличивается монотонно.

  • succeeded (int32)

    Количество Pods, которые достигли состояния Succeeded. Значение увеличивается монотонно для заданного spec. Однако оно может уменьшаться в ответ на масштабирование вниз эластичных индексированных задач.

  • completedIndexes (строка)

    completedIndexes содержит завершенные индексы, когда .spec.completionMode = "Indexed" в текстовом формате. Индексы представлены как десятичные целые числа, разделенные запятыми. Числа перечислены в порядке возрастания. Три и более последовательных числа сжаты и представлены первой и последней элементами последовательности, разделёнными дефисом. Например, если завершенные индексы — 1, 3, 4, 5 и 7, они представлены как "1,3-5,7".

  • conditions ([]JobCondition)

    Стратегия патча: слияние по ключу type

    Атомарно: будет заменено при слиянии

    Последние доступные наблюдения за текущим состоянием объекта. Когда работа завершается неудачно, одно из условий будет иметь тип "Failed" и состояние true. Когда работа приостанавливается, одно из условий будет иметь тип "Suspended" и состояние true; когда работа возобновляется, состояние этого условия станет false. Когда работа завершается, одно из условий будет иметь тип "Complete" и состояние true.

    Задача считается завершенной, когда она находится в терминальном состоянии, либо "Complete", либо "Failed". Задача не может иметь оба состояния "Complete" и "Failed". Кроме того, она не может находиться в состояниях "Complete" и "FailureTarget". Условия "Complete", "Failed" и "FailureTarget" не могут быть отключены.

    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, которая поддерживает правильную маршализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

    • conditions.lastTransitionTime (Время)

      Последнее время перехода условия из одного состояния в другое.

      Время — это оболочка вокруг time.Time, которая поддерживает правильную маршализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.

    • conditions.message (строка)

      Читаемое человеком сообщение, указывающее подробности о последнем переходе.

    • conditions.reason (строка)

      (краткое) основание последнего перехода состояния.

  • uncountedTerminatedPods (UncountedTerminatedPods)

    uncountedTerminatedPods содержит UIDs Pods, которые завершились, но контроллер задач еще не учёл их в счётчиках состояния.

    Контроллер задач создает Pods с finalizer. Когда Pod завершается (успешно или неудачно), контроллер выполняет три шага для учета его в состоянии задачи:

    1. Добавить UID Pod в массивы в этом поле. 2. Удалить finalizer Pod. 3. Удалить UID Pod из массивов, увеличив соответствующий счетчик.

    Старые задачи могут не отслеживаться с помощью этого поля, в этом случае поле остается null. Структура пуста для завершенных задач.

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

    • uncountedTerminatedPods.failed ([]строка)

      Установлено: уникальные значения будут сохраняться при слиянии

      failed содержит UIDs завершившихся неудачно Pods.

    • uncountedTerminatedPods.succeeded ([]строка)

      Установлено: уникальные значения будут сохраняться при слиянии

      succeeded содержит UIDs завершившихся успешно Pods.

Уровень бета

  • ready (int32)

    Количество активных Pods, которые имеют состояние Ready и не завершаются (без deletionTimestamp).

Уровень альфа

  • failedIndexes (строка)

    FailedIndexes содержит индексы, завершившиеся неудачно, когда spec.backoffLimitPerIndex установлен. Индексы представлены в текстовом формате аналогично полю completedIndexes, т.е. они хранятся как десятичные целые числа, разделенные запятыми. Числа перечислены в порядке возрастания. Три и более последовательных числа сжаты и представлены первой и последней элементами последовательности, разделёнными дефисом. Например, если индексы, завершившиеся неудачно, — 1, 3, 4, 5 и 7, они представлены как "1,3-5,7". Набор индексов, завершившихся неудачно, не может перекрываться с набором завершенных индексов.

    Это поле находится на уровне бета-версии. Оно может быть использовано, когда включено JobBackoffLimitPerIndex feature gate (включено по умолчанию).

  • terminating (int32)

    Количество Pods, которые завершаются (в фазах Pending или Running и имеют deletionTimestamp).

    Это поле находится на уровне бета-версии. Контроллер задач заполняет поле, когда включено feature gate JobPodReplacementPolicy (включено по умолчанию).

JobList

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

  • apiVersion: batch/v1

  • kind: JobList

  • metadata (ListMeta)

    Стандартные метаданные списка. Подробнее: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • items ([]Job), необходимо

    items — это список задач.

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

Spec-Zone.ru

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