Spec-Zone.ru › Kubernetes 1.28

Задача

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

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/v1beta1 API. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector

Beta level

  • podFailurePolicy (PodFailurePolicy)

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

    Это поле находится на стадии бета-тестирования. Оно может быть использовано при включённой метке JobPodFailurePolicy (включена по умолчанию).

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

    • podFailurePolicy.rules ([]PodFailurePolicyRule), необходимо

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

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

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

      • podFailurePolicy.rules.action (string), необходимо

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

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

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

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

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

        • podFailurePolicy.rules.onPodConditions.status (string), необходимо

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

        • podFailurePolicy.rules.onPodConditions.type (string), необходимо

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

      • podFailurePolicy.rules.onExitCodes (PodFailurePolicyOnExitCodesRequirement)

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

        PodFailurePolicyOnExitCodesRequirement описывает требования к обработке завершившегося сбоем Pod на основе кодов завершения его контейнеров. В частности, он ищет .state.terminated.exitCode для каждого контейнера приложения и контейнера инициализации, представленного соответственно полями .status.containerStatuses и .status.initContainerStatuses в статусе Pod. Контейнеры, завершившиеся успешно (код завершения 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 правило применяется ко всем контейнерам. При указании, оно должно соответствовать одному из имен контейнера или initContainer в шаблоне Pod.

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

  • backoffLimitPerIndex (int32)

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

  • maxFailedIndexes (int32)

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

  • podReplacementPolicy (string)

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

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

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

JobStatus

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

  • startTime (Time)

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

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

  • completionTime (Time)

    Представляет время завершения задачи. Не гарантируется, что оно будет установлено в порядке «происходит раньше» (happens-before) для отдельных операций. Оно представлено в формате RFC3339 и находится в UTC. Время завершения устанавливается только при успешном завершении задачи.

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

  • active (int32)

    Количество ожидающих и выполняющихся Pod.

  • failed (int32)

    Количество Pod, которые достигли фазы Failed.

  • succeeded (int32)

    Количество Pod, которые достигли фазы Succeeded.

  • completedIndexes (string)

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

  • conditions ([]JobCondition)

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

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

    Последние доступные наблюдения за текущим состоянием объекта. Когда задача Job завершается неудачно, одно из условий будет иметь тип "Failed" и состояние true. Когда задача Job приостанавливается, одно из условий будет иметь тип "Suspended" и состояние true; при возобновлении задачи Job состояние этого условия станет false. При завершении задачи Job одно из условий будет иметь тип "Complete" и состояние true. Дополнительная информация: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

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

    • conditions.status (string), required

      Состояние условия, одно из True, False, Unknown.

    • conditions.type (string), required

      Тип условия задачи, 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 содержит UID Pod, которые завершились, но контроллер задач пока не учел их в счетчиках состояния.

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

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

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

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

    • uncountedTerminatedPods.failed ([]string)

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

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

    • uncountedTerminatedPods.succeeded ([]string)

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

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

Уровень бета-версии

  • ready (int32)

    Количество Pod, у которых есть состояние Ready.

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

Уровень альфа-версии

  • failedIndexes (string)

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

  • terminating (int32)

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

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

Список задач Job

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

  • apiVersion: batch/v1

  • kind: JobList

  • metadata (ListMeta)

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

  • items ([]Job), required

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

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

Spec-Zone.ru

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