PodDisruptionBudget

PodDisruptionBudget — обʼєкт, який визначає максимальний розлад, який може бути завданий колекції Podʼів.

apiVersion: policy/v1

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

PodDisruptionBudget

PodDisruptionBudget — обʼєкт, який визначає максимальний розлад, який може бути завданий колекції Podʼів.


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 (string)

    UnhealthyPodEvictionPolicy визначає критерії, коли несправні 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)

    Patch strategy: обʼєднання за ключем type

    Map: унікальні значення за ключем type зберігаються під час обʼєднання

    Conditions містить стани для 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 (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 містить інформацію про Podʼи, виселення яких було оброблено субресурсом виселення API-сервера, але ще не було зафіксовано контролером PodDisruptionBudget. Pod буде в цьому map з моменту, коли API-сервер обробив запит на виселення, до моменту, коли контролер PDB побачить Pod як такий, що позначений для видалення (або після тайм-ауту). Ключем у map є назва Podʼа, а значенням — час, коли API-сервер обробив запит на виселення. Якщо видалення не відбулося і Pod все ще є, він буде автоматично видалений зі списку контролером PodDisruptionBudget через певний час. Якщо все йде добре, цей map повинен бути порожнім більшу частину часу. Велика кількість записів у map може вказувати на проблеми з видаленням Podʼів.

    Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.

  • observedGeneration (int64)

    Останнє спостережене покоління під час оновлення цього статусу PDB. DisruptionsAllowed та інша інформація про статус дійсні лише, якщо observedGeneration дорівнює поколінню обʼєкта PDB.

PodDisruptionBudgetList

PodDisruptionBudgetList —це колекція PodDisruptionBudgets.


Операції


get отримати вказаний PodDisruptionBudget

HTTP запит

GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

401: Unauthorized

get отримати статус вказаного PodDisruptionBudget

HTTP запит

GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу PodDisruptionBudget

HTTP запит

GET /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets

Параметри

Відповідь

200 (PodDisruptionBudgetList): OK

401: Unauthorized

list перелік або перегляд обʼєктів типу PodDisruptionBudget

HTTP запит

GET /apis/policy/v1/poddisruptionbudgets

Параметри

Відповідь

200 (PodDisruptionBudgetList): OK

401: Unauthorized

create ствоерння PodDisruptionBudget

HTTP запит

POST /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets

Параметри

Відповідь

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

202 (PodDisruptionBudget): Accepted

401: Unauthorized

update заміна вказаного PodDisruptionBudget

HTTP запит

PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: PodDisruptionBudget, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: Unauthorized

update заміна статусу вказанрого PodDisruptionBudget

HTTP запит

PUT /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: PodDisruptionBudget, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: Unauthorized

patch часткове оновлення вказаного PodDisruptionBudget

HTTP запит

PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: Unauthorized

patch часткове оновлення статусу вказаного PodDisruptionBudget

HTTP запит

PATCH /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}/status

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: Patch, обовʼязково

  • dryRun (в запиті): string

    dryRun

  • fieldManager (в запиті): string

    fieldManager

  • fieldValidation (в запиті): string

    fieldValidation

  • force (в запиті): boolean

    force

  • pretty (в запиті): string

    pretty

Відповідь

200 (PodDisruptionBudget): OK

201 (PodDisruptionBudget): Created

401: Unauthorized

delete видалення PodDisruptionBudget

HTTP запит

DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets/{name}

Параметри

  • name (в шляху): string, обовʼязково

    імʼя PodDisruptionBudget

  • namespace (в шляху): string, обовʼязково

    namespace

  • body: DeleteOptions

  • dryRun (в запиті): string

    dryRun

  • gracePeriodSeconds (в запиті): integer

    gracePeriodSeconds

  • pretty (в запиті): string

    pretty

  • propagationPolicy (в запиті): string

    propagationPolicy

Відповідь

200 (Status): OK

202 (Status): Accepted

401: Unauthorized

deletecollection видалення колекції PodDisruptionBudget

HTTP запит

DELETE /apis/policy/v1/namespaces/{namespace}/poddisruptionbudgets

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

Змінено September 06, 2024 at 4:29 PM PST: upstream sync (b8cab2cff8)