Spec-Zone.ru › Kubernetes 1.28

Подразделение по прерыванию работы Pod

PodDisruptionBudget — это объект, определяющий максимальное прерывание, которое может быть вызвано для коллекции Pod.

apiVersion: policy/v1

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

Подразделение по прерыванию работы Pod

PodDisruptionBudget — это объект, определяющий максимальное прерывание, которое может быть вызвано для коллекции Pod

  • apiVersion: policy/v1

  • kind: PodDisruptionBudget

  • metadata (ObjectMeta)

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

  • spec (PodDisruptionBudgetSpec)

    Описание желаемого поведения PodDisruptionBudget.

  • status (PodDisruptionBudgetStatus)

    Последний наблюдаемый статус PodDisruptionBudget.

PodDisruptionBudgetSpec

PodDisruptionBudgetSpec — это описание PodDisruptionBudget.

  • maxUnavailable (IntOrString)

    Прерывание разрешено, если после прерывания недоступно не более «maxUnavailable» pod, выбранных с помощью «selector», т. е. даже в отсутствие прерываемого pod. Например, можно предотвратить все добровольные прерывания, задав 0. Это взаимно исключающее значение с «minAvailable».

    IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML для маршалинга и унмаршалинга он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.

  • minAvailable (IntOrString)

    Прерывание разрешено, если после прерывания доступно как минимум «minAvailable» pod, выбранных с помощью «selector», т. е. даже в отсутствие прерываемого pod. Таким образом, например, можно предотвратить все добровольные прерывания, задав «100%».

    IntOrString — это тип, который может содержать int32 или строку. При использовании в JSON или YAML для маршалинга и унмаршалинга он генерирует или потребляет внутренний тип. Это позволяет, например, иметь поле JSON, которое может принимать имя или число.

  • selector (LabelSelector)

    Запрос меток над pod, чьи прерывания управляются бюджетом прерывания. Нулевой селектор не будет соответствовать ни одному pod, в то время как пустой ({}) селектор выберет все pod в пространстве имён.

  • unhealthyPodEvictionPolicy (строка)

    UnhealthyPodEvictionPolicy определяет критерии, по которым нездоровые pod должны рассматриваться для прерывания. Текущая реализация рассматривает здоровые pod как pod, у которых элемент status.conditions имеет type="Ready", status="True".

    Допустимые политики: IfHealthyBudget и AlwaysAllow. Если политика не указана, будет использоваться поведение по умолчанию, соответствующее политике IfHealthyBudget.

    Политика IfHealthyBudget означает, что работающие pod (status.phase="Running"), но еще не здоровые, могут быть прерваны только в том случае, если защищаемое приложение не нарушается (status.currentHealthy как минимум равно status.desiredHealthy). Здоровые pod будут подпадать под действие PDB для прерывания.

    Политика AlwaysAllow означает, что все работающие pod (status.phase="Running"), но еще не здоровые, считаются прерванными и могут быть прерваны независимо от того, соблюдаются ли критерии в PDB. Это означает, что потенциально работающие pod прерванного приложения могут не получить шанса стать здоровыми. Здоровые pod будут подпадать под действие PDB для прерывания.

    В будущем могут быть добавлены дополнительные политики. Клиенты, принимающие решения о прерывании, должны запрещать прерывание нездоровых pod, если они столкнутся с неизвестной политикой в этом поле.

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

PodDisruptionBudgetStatus

PodDisruptionBudgetStatus представляет информацию о состоянии PodDisruptionBudget. Статус может отставать от фактического состояния системы.

  • currentHealthy (int32), обязательно

    текущее количество здоровых pod

  • desiredHealthy (int32), обязательно

    минимальное желаемое количество здоровых pod

  • disruptionsAllowed (int32), обязательно

    Количество прерываний pod, которые в настоящее время разрешены.

  • expectedPods (int32), обязательно

    общее количество pod, учтённых в этом бюджете прерывания

  • conditions ([]Condition)

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

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

    Условия содержат условия для PDB. Контроллер прерывания устанавливает условие DisruptionAllowed. Ниже приведены известные значения для поля reason (в будущем могут быть добавлены дополнительные причины): - SyncFailed: Контроллер столкнулся с ошибкой и не смог рассчитать количество разрешенных прерываний. Следовательно, прерывания не разрешены, и состояние условия будет False.

    • InsufficientPods: Количество pod равно или меньше необходимого количества, указанного в PodDisruptionBudget. Прерывания не разрешены, и состояние условия будет False.
    • SufficientPods: Количество pod больше, чем требуется PodDisruptionBudget. Состояние будет True, и количество разрешенных прерываний будет указано в свойстве disruptionsAllowed.

    Condition содержит подробности для одного аспекта текущего состояния этого ресурса API.

    • conditions.lastTransitionTime (Time), обязательно

      lastTransitionTime — это последнее время, когда условие переключилось из одного состояния в другое. Это должно быть время изменения базового условия. Если это неизвестно, можно использовать время изменения поля API.

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

    • conditions.message (строка), обязательно

      message — это удобочитаемое сообщение, указывающее подробности о переходе. Это может быть пустая строка.

    • conditions.reason (строка), обязательно

      reason содержит программируемый идентификатор, указывающий причину последнего перехода условия. Производители определённых типов условий могут определять ожидаемые значения и значения для этого поля, а также то, считаются ли значения гарантированным API. Значение должно быть строкой CamelCase. Это поле не должно быть пустым.

    • conditions.status (строка), обязательно

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

    • conditions.type (строка), обязательно

      тип условия в CamelCase или в foo.example.com/CamelCase.

    • conditions.observedGeneration (int64)

      observedGeneration представляет .metadata.generation, на основании которой было установлено условие. Например, если .metadata.generation в настоящее время 12, но .status.conditions[x].observedGeneration — 9, условие устарело относительно текущего состояния экземпляра.

  • disruptedPods (map[string]Time)

    DisruptedPods содержит информацию о pod, чьё прерывание было обработано обработчиком подресурса API-сервера, но ещё не было наблюдаемо контроллером PodDisruptionBudget. Pod будет в этом отображении с момента обработки запроса на прерывание API-сервером до момента, когда контроллер Pod видит под как помеченный для удаления (или после таймаута). Ключом в отображении является имя pod, а значением — время, когда API-сервер обработал запрос на прерывание. Если удаление не произошло и pod по-прежнему находится там, он будет автоматически удалён из списка контроллером PodDisruptionBudget через некоторое время. Если всё пройдёт гладко, это отображение должно быть пустым большую часть времени. Большое количество записей в отображении может указывать на проблемы с удалением pod.

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

  • observedGeneration (int64)

    Последняя наблюдаемая генерация при обновлении этого PDB status. Информация о disruptionsAllowed и другом статусе действительна только если observedGeneration равно генерации объекта PDB.

PodDisruptionBudgetList

PodDisruptionBudgetList — это коллекция PodDisruptionBudgets.

  • apiVersion: policy/v1

  • kind: PodDisruptionBudgetList

  • metadata (ListMeta)

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

  • items ([]PodDisruptionBudget), обязательно

    Items — это список PodDisruptionBudgets

© 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/policy-resources/pod-disruption-budget-v1/

Spec-Zone.ru

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