Spec-Zone.ru › Kubernetes 1.27

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

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

apiVersion: policy/v1

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

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

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

  • apiVersion: policy/v1

  • kind: PodDisruptionBudget

  • metadata (ObjectMeta)

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

  • spec (PodDisruptionBudgetSpec)

    Описание желаемого поведения Подразделения по прерыванию работы Pods.

  • status (PodDisruptionBudgetStatus)

    Последнее наблюдаемое состояние Подразделения по прерыванию работы Pods.

PodDisruptionBudgetSpec

PodDisruptionBudgetSpec — это описание Подразделения по прерыванию работы Pods.

  • maxUnavailable (IntOrString)

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

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

  • minAvailable (IntOrString)

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

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

  • selector (LabelSelector)

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

  • unhealthyPodEvictionPolicy (string)

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

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

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

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

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

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

PodDisruptionBudgetStatus

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

  • currentHealthy (int32), необходимо

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

  • desiredHealthy (int32), необходимо

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

  • disruptionsAllowed (int32), необходимо

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

  • expectedPods (int32), необходимо

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

  • conditions ([]Condition)

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

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

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

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

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

    • conditions.lastTransitionTime (Time), необходимо

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

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

    • conditions.message (string), необходимо

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

    • conditions.reason (string), необходимо

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

    • conditions.status (string), необходимо

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

    • conditions.type (string), необходимо

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

    • conditions.observedGeneration (int64)

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

  • disruptedPods (map[string]Time)

    DisruptedPods содержит информацию о pods, чье прерывание было обработано обработчиком подресурса API server, но еще не было замечено контроллером PodDisruptionBudget. Pod будет в этом массиве со времени обработки запроса на прерывание API server до момента, когда контроллер Pod видит под, помеченный на удаление (или по истечении времени ожидания). Ключ в массиве — имя pod, а значение — время обработки запроса на прерывание API server. Если удаление не произошло и 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-27.docs.kubernetes.io/docs/reference/kubernetes-api/policy-resources/pod-disruption-budget-v1/

Spec-Zone.ru

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