Це багатосторінковий друкований вигляд цього розділу. Натисність щоб друкувати.
Ресурси робочих навантажень
- 1: Pod
- 2: Binding
- 3: PodTemplate
- 4: ReplicationController
- 5: ReplicaSet
- 6: Deployment
- 7: StatefulSet
- 8: ControllerRevision
- 9: DaemonSet
- 10: Job
- 11: CronJob
- 12: HorizontalPodAutoscaler
- 13: HorizontalPodAutoscaler
- 14: PriorityClass
- 15: PodSchedulingContext v1alpha3
- 16: ResourceClaim v1alpha3
- 17: ResourceClaimTemplate v1alpha3
- 18: ResourceSlice v1alpha3
1 - Pod
apiVersion: v1
import "k8s.io/api/core/v1"
Pod
Pod є колекцією контейнерів, які можуть працювати на одному хості. Цей ресурс створюється клієнтами та розміщується на хостах.
apiVersion: v1
kind: Pod
metadata (ObjectMeta)
Метадані стандартного обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PodSpec)
Специфікація бажаної поведінки Podʼа. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (PodStatus)
Останній спостережуваний статус Podʼа. Ці дані можуть бути застарілими. Заповнюється системою. Тільки для читання. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PodSpec
PodSpec — це опис Pod.
Контейнери
containers ([]Container), обовʼязково
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
Список контейнерів, що належать Podʼу. Зараз контейнери не можуть бути додані або видалені. В Podʼі повинен бути принаймні один контейнер. Не може бути оновлено.
initContainers ([]Container)
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
Список контейнерів ініціалізації, що належать Podʼу. Контейнери ініціалізації виконуються у визначеному порядку перед запуском звичайних контейнерів. Якщо будь-який контейнер ініціалізації зазнає збою, Pod вважається збійним та обробляється відповідно до restartPolicy. Імʼя контейнера ініціалізації або звичайного контейнера повинно бути унікальним серед усіх контейнерів. Контейнери ініціалізації не можуть мати дій Lifecycle, Readiness probes, Liveness probes, або Startup probes. resourceRequirements контейнера ініціалізації враховуються під час планування, знаходячи найбільше значення запиту/ліміту для кожного типу ресурсів, а потім використовуючи максимум цього значення або суму цих значень для звичайних контейнерів. Ліміти застосовуються до контейнерів ініціалізації аналогічним чином. Контейнери ініціалізації зараз не можуть бути додані або видалені. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
ephemeralContainers ([]EphemeralContainer)
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
Список ефемерних контейнерів, що запущені у цьому Pod. Ефемерні контейнери можуть бути запущені в наявному Podʼі для виконання дій, ініційованих користувачем, таких як налагодження. Цей список не може бути вказаний при створенні Podʼа, і його не можна змінити, оновивши специфікацію Podʼа. Щоб додати ефемерний контейнер до наявного Podʼа, використовуйте субресурс ефемерних контейнерів Podʼа.
imagePullSecrets ([]LocalObjectReference)
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
ImagePullSecrets — це необовʼязково список посилань на Secretʼи у тому ж просторі імен, які використовуються для отримання будь-яких образів, що використовуються у цьому PodSpec. Якщо вказано, ці Secretʼи будуть передані індивідуальним реалізаціям отримувачів для їх використання. Докладніше: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
enableServiceLinks (boolean)
EnableServiceLinks вказує, чи слід впроваджувати інформацію про Serviceʼи у змінні середовища Pod, відповідно до синтаксису Docker посилань. Необовʼязково: стандартне значення — true.
os (PodOS)
PodOS визначає параметри операційної системи Pod.
Якщо в поле OS встановлено значення linux, наступні поля не повинні бути встановлені:
- securityContext.windowsOptions
Якщо в поле OS встановлено значення windows, наступні поля не повинні бути встановлені:
- spec.hostPID
- spec.hostIPC
- spec.hostUsers
- spec.securityContext.appArmorProfile
- spec.securityContext.seLinuxOptions
- spec.securityContext.seccompProfile
- spec.securityContext.fsGroup
- spec.securityContext.fsGroupChangePolicy
- spec.securityContext.sysctls
- spec.shareProcessNamespace
- spec.securityContext.runAsUser
- spec.securityContext.runAsGroup
- spec.securityContext.supplementalGroups
- spec.securityContext.supplementalGroupsPolicy
- spec.containers[*].securityContext.appArmorProfile
- spec.containers[*].securityContext.seLinuxOptions
- spec.containers[*].securityContext.seccompProfile
- spec.containers[*].securityContext.capabilities
- spec.containers[*].securityContext.readOnlyRootFilesystem
- spec.containers[*].securityContext.privileged
- spec.containers[*].securityContext.allowPrivilegeEscalation
- spec.containers[*].securityContext.procMount
- spec.containers[*].securityContext.runAsUser
- spec.containers[*].securityContext.runAsGroup
PodOS визначає параметри операційної системи Pod.
os.name (string), обовʼязково
Name — це назва операційної системи. Поточні підтримувані значення — linux і windows. Додаткове значення може бути визначено у майбутньому і може бути одним з: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration. Клієнти повинні очікувати обробку додаткових значень і розглядати нерозпізнані значення у цьому полі як os: null.
Томи
volumes ([]Volume)
Patch strategies: retainKeys, обʼєднання по ключу
name
Map: унікальні значення ключа name будуть збережені під час злиття
Список томів, які можуть бути змонтовані контейнерами, що належать Podʼу. Докладніше: https://kubernetes.io/docs/concepts/storage/volumes
Планування
nodeSelector (map[string]string)
NodeSelector — це селектор, який має бути істинним, щоб Pod підходив для вузла. Селектор, який має відповідати міткам вузла для планування Podʼа на цьому вузлі. Докладніше: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
nodeName (string)
Поле
NodeName
вказує, на якому вузлі (node) заплановано запуск цього podʼа. Якщо це поле порожнє, pod є кандидатом для планування за допомогою планувальника, визначеного в поліschedulerName
. Після того як це поле встановлено, kubelet цього вузла стає відповідальним за життєвий цикл podʼа. Це поле не слід використовувати для вираження бажання запустити pod на конкретному вузлі. Детальніше: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodenameaffinity (Affinity)
Якщо вказано, це обмеження на планування Podʼа.
Affinity — це група правил планування з урахуванням спорідненості.
affinity.nodeAffinity (NodeAffinity)
Описує правила планування Podʼа з урахуванням спорідненості до вузла.
affinity.podAffinity (PodAffinity)
Описує правила планування Podʼа з урахуванням спорідненості до інших Podʼів (наприклад, розташувати цей Pod на тому ж вузлі, у тій же зоні тощо, що й інші Podʼи).
affinity.podAntiAffinity (PodAntiAffinity)
Описує правила планування Podʼа з урахуванням анти-спорідненості до інших Podʼів (наприклад, уникати розташування цього Podʼа на тому ж вузлі, у тій же зоні тощо, що й інші Podʼи).
tolerations ([]Toleration)
Atomic: буде замінено під час злиття
Якщо вказано, визначає толерантності Podʼа.
Pod, до якого прикріплено цю толерантність, толерує будь-який taint, який відповідає трійці <key,value,effect> за допомогою оператора зіставлення
. tolerations.key (string)
Ключ taint, до якого застосовується толерантність. Порожнє значення означає відповідність усім ключам taint. Якщо ключ порожній, оператор має бути Exists; ця комбінація означає відповідність усім значенням та ключам.
tolerations.operator (string)
Оператор, що представляє стосунок ключа до значення. Допустимі оператори — Exists та Equal. Стандартне значення — Equal. Exists еквівалентний знаку підстановки для значення, щоб Pod міг толерувати всі taint певної категорії.
tolerations.value (string)
Значення taint, до якого застосовується толерантність. Якщо оператор Exists, значення має бути порожнім, в іншому випадку — це звичайний рядок.
tolerations.effect (string)
Ефект, до якого застосовується толерантність. Порожнє значення означає відповідність усім ефектам taint. Допустимі значення: NoSchedule, PreferNoSchedule та NoExecute.
tolerations.tolerationSeconds (int64)
TolerationSeconds визначає період часу, протягом якого толерантність (яка має бути з ефектом NoExecute, інакше це поле ігнорується) толерує taint. Стандартно не встановлюється, що означає виконувати толерування taint назавжди (не видаляти). Нульові та відʼємні значення система обробляє як 0 (негайне видалення).
schedulerName (string)
Якщо вказано, Pod буде оброблено вказаним планувальником. Якщо не вказано, Pod буде оброблено стандартним планувальником.
runtimeClassName (string)
RuntimeClassName посилається на обʼєкт RuntimeClass у групі node.k8s.io, який повинен бути використаний для запуску цього Podʼа. Якщо жоден ресурс RuntimeClass не відповідає названому класу, Pod не буде запущено. Якщо не встановлено або порожнє, буде використано "старий" RuntimeClass, який є неявним класом з порожнім визначенням, що використовує стандартний обробник середовища. Детальніше: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
priorityClassName (string)
Якщо вказано, вказує на пріоритет Podʼа. "system-node-critical" та "system-cluster-critical" — це два спеціальні ключові слова, які вказують на найвищі пріоритети, причому перший має найвищий пріоритет. Будь-яке інше імʼя має бути визначене шляхом створення обʼєкта PriorityClass з цим імʼям. Якщо не вказано, пріоритет Podʼа буде стандартним або нульовим, якщо немає стандартного значення.
priority (int32)
Значення пріоритету. Різні системні компоненти використовують це поле для визначення пріоритету Podʼа. Коли включено контролер доступу до пріоритетів (Priority Admission Controller), він не дозволяє користувачам встановлювати це поле. Контролер доступу заповнює це поле з PriorityClassName. Чим вище значення, тим вищий пріоритет.
preemptionPolicy (string)
PreemptionPolicy — це політика випередження для Podʼів з нижчим пріоритетом. Одне з: Never чи PreemptLowerPriority. Стандартне значення — PreemptLowerPriority, якщо не встановлено.
topologySpreadConstraints ([]TopologySpreadConstraint)
Patch strategy: об’єднання за ключем
topologyKey
Map: під час об’єднання будуть збережені унікальні значення за ключами
topologyKey, whenUnsatisfiable
TopologySpreadConstraints описує, як група Podʼів повинна розподілятися по топологічних доменах. Планувальник розміщуватиме Podʼи таким чином, щоб дотримуватися обмежень. Всі topologySpreadConstraints поєднуються логічним оператором AND.
TopologySpreadConstraint визначає, як розподіляти відповідні Podʼи серед заданої топології.
topologySpreadConstraints.maxSkew (int32), обовʼязково
MaxSkew описує ступінь нерівномірного розподілу Podʼів. Коли
whenUnsatisfiable=DoNotSchedule
, це максимальна допустима різниця між кількістю відповідних Podʼів у цільовій топології та глобальним мінімумом. Глобальний мінімум — це мінімальна кількість відповідних Podʼів у відповідному домені або нуль, якщо кількість відповідних доменів менша за MinDomains. Наприклад, у кластері з 3 зонами MaxSkew встановлено на 1, і Podʼи з однаковим labelSelector розподіляються як 2/2/1: У цьому випадку глобальний мінімум дорівнює 1.- якщо MaxSkew дорівнює 1, новий Pod може бути розміщений тільки в zone3, щоб стати 2/2/2; розміщення його в zone1 (zone2) призведе до порушення MaxSkew (1) через ActualSkew (3-1) в zone1 (zone2).
- якщо MaxSkew дорівнює 2, новий Pod може бути розміщений у будь-якій зоні. Коли
whenUnsatisfiable=ScheduleAnyway
, це використовується для надання більшої переваги топологіям, які задовольняють цю умову. Це обовʼязкове поле. Стандартне значення — 1; 0 не допускається.
topologySpreadConstraints.topologyKey (string), обовʼязково
TopologyKey — це ключ міток вузлів. Вузли, які мають мітку з цим ключем та ідентичними значеннями, вважаються такими, що належать до однієї топології. Ми розглядаємо кожен <key, value> як "кошик" і намагаємося розмістити збалансовану кількість Podʼів у кожному кошику. Ми визначаємо домен як конкретний екземпляр топології. Також ми визначаємо відповідний домен як домен, чиї вузли відповідають вимогам nodeAffinityPolicy та nodeTaintsPolicy. Наприклад, якщо TopologyKey — це "kubernetes.io/hostname", кожен вузол є доменом цієї топології. І, якщо TopologyKey — це "topology.kubernetes.io/zone", кожна зона є доменом цієї топології. Це обовʼязкове поле.
topologySpreadConstraints.whenUnsatisfiable (string), обовʼязково
WhenUnsatisfiable вказує, як діяти з Podʼом, якщо він не відповідає умовам розподілу.
DoNotSchedule (стандартно) наказує планувальнику не розміщувати його.
ScheduleAnyway наказує планувальнику розмістити Pod у будь-якому місці, але з наданням більшої переваги топологіям, які допоможуть зменшити нерівномірність розподілу. Умова вважається "незадовільною" для вхідного Podʼа, якщо і тільки якщо кожне можливе призначення вузла для цього Podʼа порушуватиме "MaxSkew" у деякій топології. Наприклад, у кластері з 3 зонами MaxSkew встановлено на 1, і Podʼи з однаковим labelSelector розподіляються як 3/1/1:
Якщо WhenUnsatisfiable встановлено на DoNotSchedule, новий Pod може бути розміщений тільки в zone2 (zone3), щоб стати 3/2/1 (3/1/2), оскільки ActualSkew (2-1) у zone2 (zone3) задовольняє MaxSkew (1). Іншими словами, кластер все ще може бути незбалансованим, але планувальник не зробить його більш незбалансованим. Це обовʼязкове поле.
topologySpreadConstraints.labelSelector (LabelSelector)
LabelSelector використовується для знаходження відповідних Podʼів. Podʼи, які відповідають цьому label selector, враховуються для визначення кількості Podʼів у відповідному топологічному домені.
topologySpreadConstraints.matchLabelKeys ([]string)
Atomic: буде замінено під час об’єднання
MatchLabelKeys — це набір ключів міток Podʼа для вибору Podʼів, за якими буде розраховано розподіл. Ключі використовуються для пошуку значень у мітках вхідного Podʼа, ці ключ-значення міток поєднуються з labelSelector для вибору групи наявних Podʼів, за якими буде розраховано розподіл для вхідного Podʼа. Той самий ключ заборонено мати як у MatchLabelKeys, так і в LabelSelector. MatchLabelKeys не можна встановлювати, коли LabelSelector не встановлено. Ключі, які не існують у мітках вхідного Podʼа, будуть ігноруватися. Нульовий або порожній список означає збіг тільки з labelSelector.
Це бета-поле і вимагає ввімкнення функції MatchLabelKeysInPodTopologySpread (типово увімкнено).
topologySpreadConstraints.minDomains (int32)
MinDomains вказує мінімальну кількість відповідних доменів. Коли кількість відповідних доменів з відповідними топологічними ключами менша за minDomains, Pod Topology Spread трактує "глобальний мінімум" як 0, і потім виконується розрахунок Skew. І коли кількість відповідних доменів з відповідними топологічними ключами дорівнює або перевищує minDomains, це значення не впливає на розподіл. У результаті, коли кількість відповідних доменів менша за minDomains, планувальник не розміщуватиме більше maxSkew Podʼів у ці домени. Якщо значення дорівнює null, обмеження поводиться так, ніби MinDomains дорівнює 1. Допустимі значення — цілі числа, більші за 0. Коли значення не дорівнює null, WhenUnsatisfiable має бути DoNotSchedule.
Наприклад, у кластері з 3 зонами MaxSkew встановлено на 2, MinDomains встановлено на 5, і Podʼи з однаковим labelSelector розподіляються як 2/2/2:
Кількість доменів менша за 5 (MinDomains), тому "глобальний мінімум" трактуватиметься як 0. У цій ситуації новий Pod з тим самим labelSelector не може бути розміщений, оскільки обчислений skew буде 3 (3 - 0), якщо новий Pod буде розміщено в будь-якій з трьох зон, це порушить MaxSkew.
topologySpreadConstraints.nodeAffinityPolicy (string)
NodeAffinityPolicy вказує, як ми будемо враховувати nodeAffinity/nodeSelector Podʼа при розрахунку перекосу розподілу топології Pod. Варіанти:
- Honor: тільки вузли, що відповідають nodeAffinity/nodeSelector, включаються до розрахунків.
- Ignore: nodeAffinity/nodeSelector ігноруються. Всі вузли включаються до розрахунків.
Якщо це значення дорівнює null, поведінка еквівалентна полю Honor. Це функція на рівні бета, типово увімкнена за допомогою прапорця NodeInclusionPolicyInPodTopologySpread.
topologySpreadConstraints.nodeTaintsPolicy (string)
NodeTaintsPolicy вказує, як ми будемо враховувати node taints при розрахунку перекосу розподілу топології Pod. Варіанти:
- Honor: вузли без taints, разом з вузлами з taints, для яких вхідний Pod має толерантність, включаються.
- Ignore: node taints ігноруються. Всі вузли включаються.
Якщо це значення дорівнює null, поведінка еквівалентна полю Ignore. Це функція на рівні бета, типово увімкнена за допомогою прапорця NodeInclusionPolicyInPodTopologySpread.
overhead (map[string]Quantity)
Overhead представляє ресурси, що представляють накладні витрати Podʼа для роботи з конкретним RuntimeClass. Це поле буде автоматично заповнене під час допуску контролером RuntimeClass. Якщо контролер допуску RuntimeClass увімкнено, overhead не повинен бути встановлений у запитах на створення Podʼа. Контролер допуску RuntimeClass відхилить запити на створення Podʼа, у яких overhead вже встановлений. Якщо RuntimeClass налаштований та обраний у PodSpec, Overhead буде встановлено на значення, визначене у відповідному RuntimeClass, в іншому випадку воно залишиться невстановленим та буде вважатися рівним нулю. Докладніше: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
Життєвий цикл
restartPolicy (string)
Політика перезапуску для всіх контейнерів у Podʼі. Одне з Always, OnFailure, Never. В деяких контекстах може бути дозволений лише субнабір цих значень. Стандартне значення — Always. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy
terminationGracePeriodSeconds (int64)
Необовʼязкова тривалість у секундах, необхідна для коректного завершення роботи Podʼа. Може бути зменшена у запиті на видалення. Значення повинно бути невідʼємним цілим числом. Значення нуль означає негайне припинення через сигнал kill (без можливості завершити роботу коректно). Якщо це значення є nil, буде використано стандартний період завершення. Період належного завершення — це тривалість у секундах після того, як процеси, що працюють у Podʼі, отримають сигнал про завершення, і до того, як вони будуть примусово зупинені сигналом kill. Встановіть це значення більше, ніж очікуваний час завершення вашого процесу. Стандартне значення — 30 секунд.
activeDeadlineSeconds (int64)
Необовʼязкова тривалість у секундах, протягом якої Pod може бути активним на вузлі відносно StartTime, перш ніж система почне активно намагатися позначити його як несправний та припинити роботу повʼязаних контейнерів. Значення повинно бути додатним цілим числом.
readinessGates ([]PodReadinessGate)
Atomic: буде замінено під час злиття
Якщо вказано, всі readiness gates будуть оцінюватися для готовності Podʼа. Pod вважається готовим, коли всі його контейнери готові І всі умови, зазначені в readiness gates, мають статус "True". Докладніше: https://git.k8s.io/enhancements/keps/sig-network/580-pod-readiness-gates
PodReadinessGate містить посилання на стан Podʼа
readinessGates.conditionType (string), обовʼязково
ConditionType належить до стану у списку станів Podʼа з відповідним типом.
Імʼя хосту та розвʼязування імен
hostname (string)
Вказує імʼя хосту Podʼа. Якщо не вказано, імʼя хосту Podʼа буде встановлено в значення визначене системою.
setHostnameAsFQDN (boolean)
Якщо встановлено значення true, імʼя хосту Podʼа буде налаштоване як повне доменне імʼя (FQDN) Podʼа, а не просто коротке імʼя (стандартно). У Linux-контейнерах це означає встановлення FQDN в полі імʼя хосту ядра (поле nodename структури utsname). У Windows-контейнерах це означає встановлення значення реєстру імʼя хосту для ключа реєстру HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters на FQDN. Якщо Pod не має FQDN, це не має ефекту. Стандартне значення — false.
subdomain (string)
Якщо вказано, повне кваліфіковане імʼя хосту Podʼа буде "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". Якщо не вказано, Pod не буде мати доменного імені взагалі.
hostAliases ([]HostAlias)
Patch strategy: злиття за ключем
ip
Map: унікальні значення ключа ip будуть збережені під час злиття
HostAliases є необовʼязковим списком хостів та IP, які будуть впроваджені у файл hosts Podʼа, якщо вказано.
HostAlias містить зітсавлення між IP та іменами хостів, які будуть впроваджені як запис у файл hosts Podʼа.
hostAliases.ip (string), обовʼязково
Запис IP-адреси у файлі hosts.
hostAliases.hostnames ([]string)
Atomic: буде замінено під час злиття
Імена хостів для вищевказаної IP-адреси.
dnsConfig (PodDNSConfig)
Вказує параметри DNS Podʼа. Параметри, вказані тут, будуть обʼєднані зі згенерованою DNS-конфігурацією на основі DNSPolicy.
PodDNSConfig визначає параметри DNS Podʼа на додаток до тих, що генеруються з DNSPolicy.
dnsConfig.nameservers ([]string)
Atomic: буде замінено під час злиття
Список IP-адрес DNS-серверів імен. Він буде доданий до основних серверів імен, згенерованих з DNSPolicy. Дубльовані сервери імен будуть видалені.
dnsConfig.options ([]PodDNSConfigOption)
Atomic: буде замінено під час злиття
Список опцій DNS-резолвера. Він буде обʼєднаний з основними опціями, згенерованими з DNSPolicy. Дубльовані записи будуть видалені. Опції розвʼязування імен, зазначені в Options, замінять ті, що зʼявляються в основній DNSPolicy.
PodDNSConfigOption визначає опції DNS-резольвера Podʼа.
dnsConfig.options.name (string)
Обовʼязкове.
dnsConfig.options.value (string)
dnsConfig.searches ([]string)
Atomic: буде замінено під час злиття
Список доменів пошуку DNS для пошуку імен хостів. Він буде доданий до основних шляхів пошуку, згенерованих з DNSPolicy. Дубльовані шляхи пошуку будуть видалені.
dnsPolicy (string)
Встановлює політику DNS для Podʼа. Стандартне значеняя — "ClusterFirst". Допустимі значення: ʼClusterFirstWithHostNetʼ, ʼClusterFirstʼ, ʼDefaultʼ або ʼNoneʼ. Параметри DNS, задані в DNSConfig, будуть обʼєднані з політикою, вибраною за допомогою DNSPolicy. Щоб налаштувати опції DNS разом з hostNetwork, потрібно явно вказати політику DNS як ʼClusterFirstWithHostNetʼ.
Простори імен хоста
hostNetwork (boolean)
Використання мережі хоста для цього Podʼа. Використовує простір імен мережі хоста. Якщо ця опція встановлена, необхідно вказати порти, які будуть використовуватися. Стандартне значення — false.
hostPID (boolean)
Використання простору імен PID хоста. Необовʼязково: стандартне значення — false.
hostIPC (boolean)
Використання простору імен IPC хоста. Необовʼязково: стандартне значення — false.
shareProcessNamespace (boolean)
Спільний процесний простір імен між усіма контейнерами в Podʼі. Якщо це встановлено, контейнери зможуть бачити та надсилати сигнали процесам з інших контейнерів у тому ж Podʼі, і перший процес у кожному контейнері не буде мати PID 1. HostPID та ShareProcessNamespace не можуть бути встановлені одночасно. Необовʼязково: стандартне значення — false.
Службовий обліковий запис
serviceAccountName (string)
ServiceAccountName — це імʼя службового облікового запису, який використовується для запуску цього Podʼа. Детальніше: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
automountServiceAccountToken (boolean)
AutomountServiceAccountToken вказує, чи повинен токен службового облікового запису автоматично монтуватися.
Контекст безпеки
securityContext (PodSecurityContext)
SecurityContext містить атрибути безпеки на рівні Podʼа та загальні налаштування контейнера. Необовʼязково: стандартне значення — порожньо. Див. опис типу для стандартних значень для кожного поля.
PodSecurityContext містить атрибути безпеки на рівні Podʼа та загальні налаштування контейнера. Деякі поля також присутні у container.securityContext. Значення полів container.securityContext мають пріоритет над значеннями полів PodSecurityContext.
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile — параметри AppArmor, які будуть використовуватися контейнерами у цьому pod'і. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
AppArmorProfile визначає налаштування AppArmor для контейнера або podʼа.
securityContext.appArmorProfile.type (string), обовʼязково
Поле
type
вказує, який тип профілю AppArmor буде застосовано. Дійсні варіанти:Localhost
— профіль, попередньо завантажений на вузлі.RuntimeDefault
— стандартний профіль середовища виконання контейнрів.Unconfined
— без примусового виконання правил AppArmor.
securityContext.appArmorProfile.localhostProfile (string)
localhostProfile
вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.fsGroup (int64)
Спеціальна додаткова група, яка застосовується до всіх контейнерів у Podʼі. Деякі типи томів дозволяють Kubelet змінювати право власності на цей том, щоб він належав Podʼу:
- GID власника буде FSGroup
- Встановлюється біт setgid (нові файли, створені в томі, будуть належати FSGroup)
- Біти дозволів обʼєднуються з rw-rw----
Якщо не встановлено, Kubelet не змінює право власності та дозволи будь-якого тому. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.fsGroupChangePolicy (string)
fsGroupChangePolicy визначає поведінку зміни прав власності та дозволів тому перед тим, як він буде доступний у Podʼі. Це поле застосовується лише до типів томів, які підтримують права власності на основі fsGroup (та дозволів). Це не впливає на ефемерні типи томів, такі як: secret, configmaps та emptydir. Дійсні значення: "OnRootMismatch" та "Always". Якщо не вказано, використовується "Always". Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в
PodSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення
true
, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значенняfalse
, така перевірка не виконується. Також може бути налаштовано вSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, вказане вSecurityContext
.securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в
SecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
securityContext.seccompProfile.type (string), обовʼязкове
type вказує, який тип профілю seccomp буде застосовано. Допустимі варіанти:
- Localhost — має бути використаний профіль, визначений у файлі на вузлі.
- RuntimeDefault — має бути використаний стандартний профіль для середовища виконання контейнерів.
- Unconfined — не застосовується жоден профіль.
securityContext.seccompProfile.localhostProfile (string)
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосовано до всіх контейнерів. Якщо не зазначено, середовище виконання контейнера виділить випадковий контекст SELinux для кожного контейнера. Також може бути встановлено в SecurityContext. Якщо встановлено і в SecurityContext, і в PodSecurityContext, то значення, зазначене в SecurityContext, має пріоритет для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SELinuxOptions — це мітки, які будуть застосовані до контейнера
securityContext.seLinuxOptions.level (string)
Level — це мітка рівня SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role — це мітка ролі SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type — це мітка типу SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User — це мітка користувача SELinux, яка застосовується до контейнера.
securityContext.supplementalGroups ([]int64)
Atomic: буде замінено під час злиття
Список груп, які застосовуються до першого процесу, запущеного в кожному контейнері, на додачу до основного GID контейнера та
fsGroup
(якщо вказано). Якщо функціяSupplementalGroupsPolicy
увімкнена, полеsupplementalGroupsPolicy
визначає, чи будуть ці групи додані до вже визначених у контейнерному образі або замінять їх. Якщо не вказано, додаткові групи не додаються, хоча членство в групах, визначених в образі контейнера, може бути використане залежно від поляsupplementalGroupsPolicy
. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.securityContext.supplementalGroupsPolicy (string)
Визначає, як обчислюються додаткові групи для перших процесів контейнера. Дійсні значення: "Merge" і "Strict". Якщо не вказано, використовується значення "Merge". (Alpha) Використання цього поля вимагає ввімкненої функції
SupplementalGroupsPolicy
, і середовище виконання контейнерів повинно підтримувати цю функцію. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.securityContext.sysctls ([]Sysctl)
Atomic: буде замінено під час злиття
Sysctls містять список sysctls з простором імен, що використовуються для Podʼа. Podʼи з непідтримуваними sysctl (середовищем виконання контейнера) можуть не запуститися. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
Sysctl визначає параметр ядра, який потрібно встановити
securityContext.sysctls.name (string), обовʼязкове
Назва властивості
securityContext.sysctls.value (string), обовʼязкове
Значення властивості
securityContext.windowsOptions (WindowsSecurityContextOptions)
Параметри, специфічні для Windows, що застосовуються до всіх контейнерів. Якщо не зазначено, використовуються параметри у SecurityContext контейнера. Якщо встановлено і в SecurityContext, і в PodSecurityContext, то значення, зазначене в SecurityContext, має пріоритет. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — linux.
WindowsSecurityContextOptions містять параметри та облікові дані, специфічні для Windows.
securityContext.windowsOptions.gmsaCredentialSpec (string)
GMSACredentialSpec — це місце, де веб-хук GMSA (https://github.com/kubernetes-sigs/windows-gmsa) вставляє вміст GMSA credential spec, зазначений у полі GMSACredentialSpecName.
securityContext.windowsOptions.gmsaCredentialSpecName (string)
GMSACredentialSpecName — це ім’я специфікації облікових даних GMSA для використання.
securityContext.windowsOptions.hostProcess (boolean)
HostProcess визначає, чи повинен контейнер запускатися як контейнер ʼHost Processʼ. Усі контейнери Podʼа повинні мати однакове ефективне значення HostProcess (не дозволяється змішування контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess дорівнює true, то HostNetwork також має бути встановлено на true.
securityContext.windowsOptions.runAsUserName (string)
Ім’я користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Також можна встановити в PodSecurityContext. Якщо встановлено як у SecurityContext, так і в PodSecurityContext, значення, вказане в SecurityContext, має пріоритет.
Alpha рівень
hostUsers (boolean)
Використання простору імен користувачів хоста. Необовʼязково: стандартне значення — true. Якщо встановлено true або не зазначено, Pod буде виконуватися в просторі імен користувачів хоста, корисно, коли Pod потребує функції, доступної лише в просторі імен користувачів хоста, такої як завантаження модуля ядра з CAP_SYS_MODULE. Коли встановлено false, створюється новий простір імен для користувачів для Podʼа. Встановлення значення false корисно для зниження ризику вразливостей виходу з контейнера, дозволяючи користувачам запускати контейнери з правами root без фактичних привілеїв root на хості. Це поле є рівнем alpha і враховується лише серверами, які включають функцію UserNamespacesSupport.
resourceClaims ([]PodResourceClaim)
Patch strategy: retainKeys, обʼєднання за ключем
name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
ResourceClaims визначає, які ResourceClaims повинні бути виділені та зарезервовані перед тим, як Podʼу буде дозволено почати роботу. Ресурси будуть доступні тим контейнерам, які споживають їх за іменем.
Це поле є альфа-рівнем і вимагає увімкнення функції DynamicResourceAllocation.
Це поле є незмінним.
PodResourceClaim
посилається на один конкретнийResourceClaim
, або безпосередньо, або через вказанняResourceClaimTemplate
, який потім перетворюється наResourceClaim
для podʼа.Він додає до нього імʼя, яке унікально ідентифікує
ResourceClaim
всередині podʼа. Контейнери, яким потрібен доступ до цьогоResourceClaim
, посилаються на нього за цим імʼям.resourceClaims.name (string), обовʼязкове
Імʼя унікально ідентифікує цей ресурсний запит всередині Podʼа. Це повинно бути DNS_LABEL.
resourceClaims.resourceClaimName (string)
ResourceClaimName — це імʼя обʼєкта ResourceClaim у тому ж просторі імен, що і цей Pod.
Має бути задано точно одне з ResourceClaimName та ResourceClaimTemplateName.
resourceClaims.resourceClaimTemplateName (string)
ResourceClaimTemplateName — це імʼя обʼєкта ResourceClaimTemplate у тому ж просторі імен, що і цей Pod.
Шаблон буде використаний для створення нового ResourceClaim, який буде привʼязаний до цього Podʼа. Коли цей Pod буде видалений, ResourceClaim також буде видалений. Імʼя Podʼа та імʼя ресурсу разом з згенерованим компонентом будуть використані для формування унікального імені для ResourceClaim, яке буде записано в pod.status.resourceClaimStatuses.
Це поле є незмінним, і після створення ResourceClaim панель управління не вноситиме жодних змін до відповідного ResourceClaim.
Має бути встановлено точно одне з полів
ResourceClaimName
абоResourceClaimTemplateName
.
schedulingGates ([]PodSchedulingGate)
Patch strategy: обʼєднання за ключем
name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
SchedulingGates — це непрозорий список значень, які, якщо вказані, блокуватимуть планування Podʼа. Якщо schedulingGates не порожні, Pod залишатиметься в стані SchedulingGated, і планувальник не намагатиметься його розмістити.
SchedulingGates можна встановити лише під час створення Podʼа і видаляти лише згодом.
PodSchedulingGate повʼязаний з Podʼом для захисту його планування.
schedulingGates.name (string), обовʼязкове
Імʼя шлюзу планування. Кожен шлюз планування повинен мати унікальне поле name.
Застаріле
serviceAccount (string)
DeprecatedServiceAccount — це застарілий псевдонім для ServiceAccountName. Застаріле: використовуйте serviceAccountName замість цього.
Контейнер
Один контейнер застосунка, який ви хочете запустити в Podʼі.
name (string), обовʼязково
Імʼя контейнера вказується як DNS_LABEL. Кожен контейнер в Podʼі повинен мати унікальне імʼя (DNS_LABEL). Не може бути оновлено.
Образ
image (string)
Назва образу контейнера. Докладніше: https://kubernetes.io/docs/concepts/containers/images. Це поле є необовʼязковим для того, щоб дозволити більш високому рівню управління конфігурацією використовувати стандартний образ або перевизначити образ контейнера в контролері навантаження, такому як Deployments та StatefulSets.
imagePullPolicy (string)
Політика отримання образу. Одне з значень: Always, Never, IfNotPresent. Стандартно — Always, якщо вказано теґ
:latest
, або IfNotPresent у іншому випадку. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/containers/images#updating-images
Точка входу
command ([]string)
Atomic: буде замінено під час злиття
Масив точок входу. Виконується безпосередньо, не у середовищі оболонки. Якщо не надано, буде використано ENTRYPOINT образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
Atomic: буде замінено під час злиття
Аргументи точки входу. Якщо не надано, буде використано CMD образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
Робоча тека контейнера. Якщо не вказано, буде використано стандартне значення контейнера, яке може бути налаштоване в образі контейнера. Не може бути оновлено.
Порти
ports ([]ContainerPort)
Patch strategy: обʼєднання за ключем
containerPort
Map: унікальні значення за ключами
containerPort, protocol
будуть збережені під час обʼєднанняСписок портів, які потрібно відкрити з контейнера. Не вказання порту тут НЕ ЗАПОБІГАЄ його відкриттю. Будь-який порт, який прослуховує стандартну адресу "0.0.0.0" всередині контейнера, буде доступний з мережі. Зміна цього масиву за допомогою стратегічного патча злиття може пошкодити дані. Для отримання додаткової інформації дивіться https://github.com/kubernetes/kubernetes/issues/108255. Не може бути оновлено.
ContainerPort представляє мережевий порт в одному контейнері.
ports.containerPort (int32), обовʼязково
Номер порту для відкриття на IP-адресі контейнера. Це повинен бути дійсний номер порту, 0 < x < 65536.
ports.hostIP (string)
IP-адреса хоста, що звʼязується з зовнішнім портом.
ports.hostPort (int32)
Номер порту для відкриття на хості. Якщо вказано, це повинен бути дійсний номер порту, 0 < x < 65536. Якщо вказано HostNetwork, це значення повинно збігатися з ContainerPort. Більшість контейнерів цього не потребують.
ports.name (string)
Якщо вказано, це повинен бути IANA_SVC_NAME і єдиним в межах Podʼа. Кожен іменований порт в Podʼі повинен мати унікальне імʼя. Назва порту, на яку можна посилатися з Service.
ports.protocol (string)
Протокол для порту. Повинен бути UDP, TCP або SCTP. Стандартне значення — "TCP".
Змінні середовища
env ([]EnvVar)
Patch strategy: обʼєднання за ключем
name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
Список змінних середовища для встановлення в контейнері. Не може бути оновлено.
EnvVar представляє змінну середовища, присутню в контейнері.
env.name (string), обовʼязково
Назва змінної середовища. Повинно бути C_IDENTIFIER.
env.value (string)
Змінні посилання $(VAR_NAME) розгортаються за допомогою попередньо визначених змінних середовища в контейнері та будь-яких змінних середовища Service. Якщо змінну не вдається розʼязати, посилання відносно введеного рядка буде незмінним. Подвійний $$ зменшується до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): тобто "$$(VAR_NAME)" буде створювати літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгорнуті, незалежно від того, чи існує змінна, чи ні. Стандартне значення — "".
env.valueFrom (EnvVarSource)
Джерело значення змінної середовища. Не може бути використано, якщо значення не є пустим.
EnvVarSource представляє джерело значення EnvVar.
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
Вибирає ключ з ConfigMap.
env.valueFrom.configMapKeyRef.key (string), обовʼязково
Ключ для вибору.
env.valueFrom.configMapKeyRef.name (string)
Назва обʼєкта на який посилаються. Це поле фактично є обовʼязковим, але через забезпечення зворотної сумісності допускається залишати його порожнім. Екземпляри цього типу з порожнім значенням, ймовірно, є неправильними. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.configMapKeyRef.optional (boolean)
Вказує, чи має бути визначений ConfigMap або його ключ
env.valueFrom.fieldRef (ObjectFieldSelector)
Вибирає поле Podʼа: підтримує
metadata.name
,metadata.namespace
,metadata.labels['\<KEY>']
,metadata.annotations['\<KEY>']
,spec.nodeName
,spec.serviceAccountName
,status.hostIP
,status.podIP
,status.podIPs
.env.valueFrom.resourceFieldRef (ResourceFieldSelector)
Вибирає ресурс контейнера: наразі підтримуються лише обмеження і запити ресурсів (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory та requests.ephemeral-storage).
env.valueFrom.secretKeyRef (SecretKeySelector)
Вибирає ключ Secretʼа в просторі імен Podʼа
SecretKeySelector вибирає ключ Secretʼа.
env.valueFrom.secretKeyRef.key (string), обовʼязково
Ключ Secretʼа для вибору. Повинен бути дійсним ключем Secretʼа.
env.valueFrom.secretKeyRef.name (string)
Назва посилання. Це поле фактично є обовʼязковим, але через забезпечення зворотної сумісності допускається залишати його порожнім. Екземпляри цього типу з порожнім значенням, ймовірно, є неправильними. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.secretKeyRef.optional (boolean)
Зазначає, чи має бути визначений Secret або його ключ
envFrom ([]EnvFromSource)
Atomic: буде замінено під час злиття
Список джерел для заповнення змінних середовища в контейнері. Ключі, визначені в межах джерела, повинні бути C_IDENTIFIER. Усі хибні ключі будуть повідомлені як подія при запуску контейнера. Коли ключ існує в декількох джерелах, значення, що асоціюється з останнім джерелом, буде мати пріоритет. Значення, визначене за допомогою Env з дубльованим ключем, буде мати пріоритет. Не може бути оновлено.
EnvFromSource представляє джерело набору ConfigMaps
envFrom.configMapRef (ConfigMapEnvSource)
ConfigMap для вибору з
ConfigMapEnvSource вибирає ConfigMap для заповнення змінними середовища.
Зміст поля Data цільового ConfigMap буде представлено в парах ключ-значення як змінні середовища.
envFrom.configMapRef.name (string)
Назва посилання. Це поле фактично є обовʼязковим, але через забезпечення зворотної сумісності допускається залишати його порожнім. Екземпляри цього типу з порожнім значенням, ймовірно, є неправильними/ Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
envFrom.configMapRef.optional (boolean)
Вказує, чи має бути визначений ConfigMap
envFrom.prefix (string)
Необовʼязково ідентифікатор для вставлення перед кожним ключем в ConfigMap. Повинен бути C_IDENTIFIER.
envFrom.secretRef (SecretEnvSource)
Secret для вибору з
SecretEnvSource вибирає Secret для заповнення змінними середовища.
Зміст поля Data цільового Secret буде представлено в парах ключ-значення як змінні середовища.
envFrom.secretRef.name (string)
Назва посилання. Це поле фактично є обовʼязковим, але через забезпечення зворотної сумісності допускається залишати його порожнім. Екземпляри цього типу з порожнім значенням, ймовірно, є неправильними. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
envFrom.secretRef.optional (boolean)
Вказує, чи має бути визначений Secret
Томи
volumeMounts ([]VolumeMount)
Patch strategy: обʼєднання за ключем
mountPath
Map: унікальні значення за ключем mountPath будуть збережені під час обʼєднання
Томи, які будуть змонтовані в файлову систему контейнера. Не може бути оновлено.
VolumeMount описує монтування Тому всередині контейнера.
volumeMounts.mountPath (string), обовʼязково
Шлях всередині контейнера, за яким повинен бути змонтований том. Не повинен містити ':'.
volumeMounts.name (string), обовʼязково
Повинно відповідати імені Тому.
volumeMounts.mountPropagation (string)
mountPropagation визначає, як монтування розповсюджуються від хоста до контейнера і навпаки. Коли не встановлено, використовується MountPropagationNone. Це поле є бета-версією в 1.10. Коли
RecursiveReadOnly
встановлено вIfPossible
абоEnabled
,MountPropagation
повинен бутиNone
або не вказаним (стандартноNone
).volumeMounts.readOnly (boolean)
Змонтований як тільки для читання, якщо true, для читання/запису в іншому випадку (false або не вказано). Стандартне значення — false.
volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly
вказує, чи слід обробляти монтування тільки для читання рекурсивно.Якщо
ReadOnly
встановлено вfalse
, це поле не має значення і не має бути вказаним.Якщо
ReadOnly
дорівнюєtrue
, і це поле встановлено вDisabled
, монтування не стає рекурсивним тільки для читання. Якщо це поле встановлено вIfPossible
, монтування стає рекурсивним тільки для читання, якщо це підтримується середовищем виконання контейнерів. Якщо це поле встановлено вEnabled
, монтування стає рекурсивним тільки для читання, якщо це підтримується середовищем виконання контейнерів; в іншому випадку, pod не буде запущено і буде згенеровано помилку, щоб вказати причину.Якщо це поле встановлено в
IfPossible
абоEnabled
,MountPropagation
має бути встановлено вNone
(або бути не вказаним, що стандартно дорівнюєNone
).Якщо це поле не вказано, воно вважається еквівалентом
Disabled
.volumeMounts.subPath (string)
Шлях всередині тому, з якого має бути змонтований том контейнера. Стандартне значення — "" (корінь тому).
volumeMounts.subPathExpr (string)
Розгорнутий шлях всередині тому, з якого має бути змонтований том контейнера. Поводиться схоже до SubPath, але посилання на змінні середовища $(VAR_NAME) розгортаються за допомогою середовища контейнера. Стандартне значення — "" (корінь тому). SubPathExpr і SubPath є взаємовиключними.
volumeDevices ([]VolumeDevice)
Patch strategy: обʼєднання за ключем
devicePath
Map: унікальні значення за ключем devicePath будуть збережені під час обʼєднання
volumeDevices — це список блочних пристроїв, які будуть використані контейнером.
volumeDevice описує зіставлення необробленого блочного пристрою всередині контейнера.
volumeDevices.devicePath (string), обовʼязково
devicePath — це шлях всередині контейнера, на який буде зіставлено пристрій.
volumeDevices.name (string), обовʼязково
name повинно відповідати імені persistentVolumeClaim в Podʼі.
Ресурси
resources (ResourceRequirements)
Обчислювальні ресурси, необхідні для цього контейнера. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
ResourceRequirements описує вимоги до обчислювальних ресурсів.
resources.claims ([]ResourceClaim)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
Claims містить назви ресурсів, визначених в spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і вимагає включення функціоналу DynamicResourceAllocation.
Це поле є незмінним. Його можна встановити тільки для контейнерів.
ResourceClaim посилається на один запис в PodSpec.ResourceClaims.
resources.claims.name (string), обовʼязково
Імʼя повинно відповідати імені одного запису в pod.spec.resourceClaims Podʼа, де використовується це поле. Це робить цей ресурс доступним всередині контейнера.
resources.claims.request (string)
Request
— це імʼя, вибране для запиту в зазначеній заявці. Якщо поле порожнє, буде доступно все з заявки; в іншому випадку, доступний буде лише результат цього запиту.
resources.limits (map[string]Quantity)
Limits визначає максимальну кількість обчислювальних ресурсів, дозволених. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[string]Quantity)
Requests описує мінімальну кількість обчислювальних ресурсів, що потрібна. Якщо Requests відсутній для контейнера, він стандартно встановлюється в Limits, якщо це явно вказано, інакше — у значення, визначеного реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resizePolicy ([]ContainerResizePolicy)
Atomic: буде замінено під час обʼєднання
Політика зміни розміру ресурсів для контейнера.
ContainerResizePolicy представляє політику зміни розміру ресурсів для контейнера.
resizePolicy.resourceName (string), обовʼязково
Назва ресурсу, до якого застосовується ця політика зміни розміру ресурсу. Підтримувані значення: cpu, memory.
resizePolicy.restartPolicy (string), обовʼязково
Політика перезапуску, яку застосовувати при зміні розміру вказаного ресурсу. Якщо не вказано, то стандартно встановлюється NotRequired.
Життєвий цикл
lifecycle (Lifecycle)
Дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Не може бути оновлено.
Lifecycle описує дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Для обробників життєвого циклу PostStart і PreStop управління контейнером блокується, поки дія не буде завершена, якщо процес контейнера виявляється несправним, тоді обробник переривається.
lifecycle.postStart (LifecycleHandler)
PostStart викликається негайно після створення контейнера. Якщо обробник не вдалося виконати, контейнер буде завершено і перезапущено згідно зі своєю політикою перезапуску. Інше управління контейнером блокується, поки хук не завершиться. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
lifecycle.preStop (LifecycleHandler)
PreStop викликається негайно перед тим, як контейнер буде завершено через запит API або подію управління, таку як невдача проби справності/запуску, випередження, скорочення ресурсів тощо. Обробник не викликається, якщо контейнер впаде або закінчить роботу. Період перебігу належного завершення підраховується до виконання хуку PreStop. Незалежно від результату обробника, контейнер в кінцевому підсумку завершиться протягом періоду належного завершення Pod (якщо він не буде затриманий завершенням залишкових операцій). Інше управління контейнером блокується, поки хук не завершиться або досягне періоду належного завершення. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
terminationMessagePath (string)
Необовʼязково: Шлях, за яким файл, до якого буде записано повідомлення про завершення контейнера, буде вмонтовано в файлову систему контейнера. Записане повідомлення, призначено для короткого кінцевого статусу, наприклад, повідомлення про помилку виразу. Якщо воно більше 4096 байт, то вузол скоротить його. Загальна довжина повідомлення по всіх контейнерах буде обмежена 12 кб. Стандартне значення — /dev/termination-log. Не може бути оновлено.
terminationMessagePolicy (string)
Вказує, як має бути заповнене повідомлення про завершення. File використовуватиме вміст terminationMessagePath для заповнення повідомлення про статус контейнера при успіху і невдачі. FallbackToLogsOnError використовуватиме останній шматок виводу логу контейнера, якщо файл повідомлення про завершення пустий і контейнер завершився з помилкою. Вивід логу обмежено 2048 байтами або 80 рядками, якщо це менше. Стандартне значення — File. Не може бути оновлено.
livenessProbe (Probe)
Періодичне тестування життєздатності контейнера. Контейнер буде перезапущено, якщо тест не вдасться. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
readinessProbe (Probe)
Періодична перевірка готовності контейнера до обслуговування. Контейнер буде видалено з точок доступу Service, якщо проба зазнає невдачі. Неможливо оновити. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
startupProbe (Probe)
StartupProbe вказує, що Pod успішно ініціалізовано. Якщо вказано, інші проби не виконуються, поки ця не закінчиться успіхом. Якщо цей тест не вдасться, Pod буде перезапущено, так само, як і в разі невдачі livenessProbe. Це може бути використано для надання різних параметрів проби на початку життєвого циклу Podʼа, коли завантаження даних або оновлення кешу може займати довгий час, ніж під час регулярної роботи. Це не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
restartPolicy (string)
RestartPolicy визначає поведінку перезапуску окремих контейнерів у Podʼі. Це поле може бути встановлено тільки для контейнерів ініціалізації, і єдине допустиме значення — "Always". Для інших контейнерів, відмінних від контейнерів ініціалізації, або коли це поле не вказано, поведінка перезапуску визначається політикою перезапуску Podʼа і типом контейнера. Встановлення RestartPolicy як "Always" для контейнера ініціалізації матиме наступний ефект: цей контейнер ініціалізації буде постійно перезапускатися при виході, поки всі звичайні контейнери не завершаться. Як тільки всі звичайні контейнери завершаться, всі контейнери ініціалізації з RestartPolicy "Always" будуть вимкнені. Цей життєвий цикл відрізняється від звичайних контейнерів ініціалізації і часто називається "sidecar" контейнер. Хоча цей контейнер ініціалізації все ще запускається у послідовності контейнерів ініціалізації, він не чекає на завершення роботи контейнера, перш ніж переходити до наступного контейнера ініціалізації . Натомість, наступний контейнер ініціалізації запускається одразу після запуску цього контейнера ініціалізації або після успішного завершення будь-якого startupProbe.
Контекст безпеки
securityContext (SecurityContext)
SecurityContext визначає параметри безпеки, з якими має працювати контейнер. Якщо встановлено, поля SecurityContext замінять відповідні поля PodSecurityContext. Докладніше: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
SecurityContext містить конфігурацію безпеки, яка буде застосована до контейнера. Деякі поля присутні як у SecurityContext, так і в PodSecurityContext. Якщо обидва встановлені, значення в SecurityContext мають пріоритет.
securityContext.allowPrivilegeEscalation (boolean)
AllowPrivilegeEscalation
контролює, чи може процес отримати більше привілеїв, ніж його батьківський процес. Цей булевий параметр безпосередньо контролює, чи буде встановлено прапоркцьno_new_privs
для процесу контейнера.AllowPrivilegeEscalation
завжди має значенняtrue
, коли контейнер:- Запускається з привілеями (
Privileged
) - Має
CAP_SYS_ADMIN
Зверніть увагу, що це поле не може бути встановлене, коли
spec.os.name
дорівнюєwindows
.- Запускається з привілеями (
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile
— це параметри AppArmor, які використовуються цим контейнером. Якщо встановлено, цей профіль переважає профіль AppArmor podʼа. Зверніть увагу, що це поле не може бути встановлене, колиspec.os.name
дорівнюєwindows
.AppArmorProfile визначає налаштування AppArmor для podʼа або контейнера.
securityContext.appArmorProfile.type (string), обовʼязково
Поле
type
вказує, який тип профілю AppArmor буде застосовано. Дійсні варіанти:Localhost
— профіль, попередньо завантажений на вузлі.RuntimeDefault
— стандартний профіль середовища виконання контейнерів.Unconfined
— без примусового виконання правил AppArmor.
securityContext.appArmorProfile.localhostProfile (string)
localhostProfile
вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.capabilities (Capabilities)
Можливості для додавання/видалення під час запуску контейнерів. Стандарто використовується набір можливостей, наданих середовищем виконання контейнера. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
Додає та видаляє можливості POSIX з працюючих контейнерів.
securityContext.capabilities.add ([]string)
Atomic: буде замінено під час обʼєднання
Додані можливості.
securityContext.capabilities.drop ([]string)
Atomic: буде замінено під час обʼєднання
Видалені можливості.
securityContext.procMount (string)
procMount
вказує тип монтування файлової системи/proc
, який слід використовувати для контейнерів. Стандартне значення —Default
, що використовує стандартні налаштування середовища виконання контейнерів для шляхів тільки для читання та замаскованих шляхів. Це вимагає ввімкнення функціональної можливостіProcMountType
. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.securityContext.privileged (boolean)
Запуск контейнера у привілейованому режимі. Процеси у привілейованих контейнерах по суті еквівалентні root на хості. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.readOnlyRootFilesystem (boolean)
Чи має цей контейнер кореневу файлову систему тільки для читання. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в
PodSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення
true
, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значенняfalse
, така перевірка не виконується. Також може бути налаштовано вSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, вказане вSecurityContext
.securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в
SecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосований до контейнера. Якщо не вказано, середовище виконання контейнера призначить випадковий контекст SELinux для кожного контейнера. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
SELinuxOptions — це мітки, що застосовуються до контейнера
securityContext.seLinuxOptions.level (string)
Level є міткою рівня SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role є міткою ролі SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type є міткою типу SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User є міткою користувача SELinux, що застосовується до контейнера.
securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
securityContext.seccompProfile.type (string), обовʼязкове
type вказує, який тип профілю seccomp буде застосовано. Допустимі варіанти:
- Localhost — має бути використаний профіль, визначений у файлі на вузлі.
- RuntimeDefault — має бути використаний стандартний профіль для середовища виконання контейнерів.
- Unconfined — не застосовується жоден профіль.
securityContext.seccompProfile.localhostProfile (string)
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
securityContext.windowsOptions (WindowsSecurityContextOptions)
Специфічні налаштування для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, використовуються опції з PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є linux.
WindowsSecurityContextOptions містять специфічні для Windows параметри та облікові дані.
securityContext.windowsOptions.gmsaCredentialSpec (string)
GMSACredentialSpec — це місце, де вебхук GMSA (https://github.com/kubernetes-sigs/windows-gmsa) вставляє вміст специфікації облікових даних GMSA, названої полем GMSACredentialSpecName.
securityContext.windowsOptions.gmsaCredentialSpecName (string)
GMSACredentialSpecName — це назва специфікації облікових даних GMSA, яка буде використана.
securityContext.windowsOptions.hostProcess (boolean)
HostProcess визначає, чи слід запускати контейнер як контейнер ʼHost Processʼ. Усі контейнери Pod повинні мати однакове значення HostProcess (не дозволено мати суміш контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess є true, то HostNetwork також повинен бути встановлений у true.
securityContext.windowsOptions.runAsUserName (string)
Імʼя користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
Налагодження
stdin (boolean)
Чи повинен цей контейнер виділяти буфер для stdin у середовищі виконання контейнера. Якщо це не встановлено, читання з stdin у контейнері завжди буде призводити до EOF. Стандартно — false.
stdinOnce (boolean)
Чи повинне середовище виконання контейнера закрити канал stdin після того, як він був відкритий одним підключенням. Коли stdin дорівнює true, потік stdin залишатиметься відкритим протягом декількох сеансів підключення. Якщо stdinOnce встановлено у true, stdin відкривається під час запуску контейнера, залишається порожнім до першого підключення клієнта до stdin, а потім залишається відкритим і приймає дані до відключення клієнта, після чого stdin закривається і залишається закритим до перезапуску контейнера. Якщо цей прапорець встановлено у false, процеси контейнера, що читають з stdin, ніколи не отримають EOF. Стандартно — false.
tty (boolean)
Чи повинен цей контейнер виділяти для себе TTY, також вимагає, щоб 'stdin' був true. Стандартно — false.
Ефемерний контейнер
Ефемерний контейнер — це тимчасовий контейнер, який ви можете додати до існуючого Pod для ініційованих користувачем дій, таких як налагодження. Ефемерні контейнери не мають гарантій щодо ресурсів або планування, і вони не будуть перезапускатися після завершення роботи або при видаленні чи перезапуску Pod. Kubelet може виселити Pod, якщо ефемерний контейнер спричинить перевищення виділених ресурсів для Pod.
Щоб додати ефемерний контейнер, використовуйте субресурс ephemeralcontainers поточного Pod. Ефемерні контейнери не можуть бути видалені або перезапущені.
name (string), обовʼязкове
Імʼя ефемерного контейнера, вказане як DNS_LABEL. Це імʼя повинно бути унікальним серед усіх контейнерів, контейнерів ініціалізації та ефемерних контейнерів.
targetContainerName (string)
Якщо встановлено, імʼя контейнера з PodSpec, на який націлюється цей ефемерний контейнер. Ефемерний контейнер буде працювати в тих самих просторах імен (IPC, PID тощо), що і цей контейнер. Якщо не встановлено, то ефемерний контейнер використовує простори імен, налаштовані в специфікації Pod.
Середовище виконання контейнера повинно підтримувати цю функцію. Якщо середовище виконання не підтримує націлювання простору імен, то результат налаштування цього поля є невизначеним.
Образ
image (string)
Імʼя образу контейнера. Докладніше: https://kubernetes.io/docs/concepts/containers/images
imagePullPolicy (string)
Політика завантаження образу. Одне з значень: Always, Never, IfNotPresent. Стандартне значення — Always, якщо вказано теґ
:latest
, або IfNotPresent в іншому випадку. Не можна оновити. Докладніше: https://kubernetes.io/docs/concepts/containers/images#updating-images
Точка входу
command ([]string)
Atomic: буде замінено під час злиття
Масив команд для точки входу. Не виконується в оболонці. Використовується ENTRYPOINT образу, якщо це не задано. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
Atomic: буде замінено під час злиття
Аргументи для точки входу. Якщо не надано, буде використано CMD образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
Робоча тека контейнера. Якщо не вказано, буде використано стандартне значення контейнера, яке може бути налаштоване в образі контейнера. Не може бути оновлено.
Змінні середовища
env ([]EnvVar)
Patch strategy: обʼєднання за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
Список змінних середовища для передачі в контейнер. Не може бути оновлено.
EnvVar представляє змінну середовища, присутню в контейнері.
name (string), обовʼязково
Назва змінної середовища. Повинно бути C_IDENTIFIER.
value (string)
Змінні посилання $(VAR_NAME) розгортаються за допомогою попередньо визначених змінних середовища в контейнері та будь-яких змінних середовища Service. Якщо змінну не вдається розʼязати, посилання відносно введеного рядка буде незмінним. Подвійний $$ зменшується до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): тобто "$$(VAR_NAME)" буде створювати літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгорнуті, незалежно від того, чи існує змінна, чи ні. Стандартне значення — "".
env.valueFrom (EnvVarSource)
Джерело значення змінної середовища. Не може бути використано, якщо значення не є пустим.
EnvVarSource представляє джерело значення EnvVar.
env.valueFrom.configMapKeyRef (ConfigMapKeySelector)
Вибирає ключ з ConfigMap.
env.valueFrom.configMapKeyRef.key (string), обовʼязково
Ключ для вибору.
env.valueFrom.configMapKeyRef.name (string), обовʼязково
Назва обʼєкта на який посилаються. Це поле фактично є обов'язковим, але через зворотну сумісність допускається бути порожнім. Випадки цього типу з порожнім значенням тут майже напевно є помилковими. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.configMapKeyRef.optional (boolean)
Вказує, чи має бути визначений ConfigMap або його ключ
env.valueFrom.fieldRef (ObjectFieldSelector)
Вибирає поле Podʼа: підтримує
metadata.name
,metadata.namespace
,metadata.labels['\<KEY>']
,metadata.annotations['\<KEY>']
,spec.nodeName
,spec.serviceAccountName
,status.hostIP
,status.podIP
,status.podIPs
.env.valueFrom.resourceFieldRef (ResourceFieldSelector)
Вибирає ресурс контейнера: наразі підтримуються лише обмеження і запити ресурсів (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory та requests.ephemeral-storage).
env.valueFrom.secretKeyRef (SecretKeySelector)
Вибирає ключ Secretʼа в просторі імен Podʼа
SecretKeySelector вибирає ключ Secretʼа.
env.valueFrom.secretKeyRef.key (string), обовʼязково
Ключ Secretʼа для вибору. Повинен бути дійсним ключем Secretʼа.
env.valueFrom.secretKeyRef.name (string)
Назва посилання. Це поле фактично є обов'язковим, але через зворотну сумісність допускається бути порожнім. Випадки цього типу з порожнім значенням тут майже напевно є помилковими. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
env.valueFrom.secretKeyRef.optional (boolean)
Зазначає, чи має бути визначений Secret або його ключ
envFrom ([]EnvFromSource)
Atomic: буде замінено під час злиття
Список джерел для заповнення змінних середовища в контейнері. Ключі, визначені в межах джерела, повинні бути C_IDENTIFIER. Усі хибні ключі будуть повідомлені як подія при запуску контейнера. Коли ключ існує в декількох джерелах, значення, що асоціюється з останнім джерелом, буде мати пріоритет. Значення, визначене за допомогою Env з дубльованим ключем, буде мати пріоритет. Не може бути оновлено.
EnvFromSource представляє джерело набору ConfigMaps
envFrom.configMapRef (ConfigMapEnvSource)
ConfigMap для вибору з
ConfigMapEnvSource вибирає ConfigMap для заповнення змінними середовища.
Зміст поля Data цільового ConfigMap буде представлено в парах ключ-значення як змінні середовища.
envFrom.configMapRef.name (string)
Назва посилання. Це поле фактично є обов'язковим, але через зворотну сумісність допускається бути порожнім. Випадки цього типу з порожнім значенням тут майже напевно є помилковими. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
envFrom.configMapRef.optional (boolean)
Вказує, чи має бути визначений ConfigMap
envFrom.prefix (string)
Необовʼязково ідентифікатор для вставлення перед кожним ключем в ConfigMap. Повинен бути C_IDENTIFIER.
envFrom.secretRef (SecretEnvSource)
Secret для вибору з
SecretEnvSource вибирає Secret для заповнення змінними середовища.
Зміст поля Data цільового Secret буде представлено в парах ключ-значення як змінні середовища.
envFrom.secretRef.name (string)
Назва посилання. Це поле фактично є обов'язковим, але через зворотну сумісність допускається бути порожнім. Випадки цього типу з порожнім значенням тут майже напевно є помилковими. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
envFrom.secretRef.optional (boolean)
Вказує, чи має бути визначений Secret
Томи
volumeMounts ([]VolumeMount)
Patch strategy: обʼєднання за ключем
mountPath
Map: унікальні значення ключа mountPath будуть збережені під час злиття
Томи Podʼів для монтування у файлову систему контейнера. Субшляхи монтування в ефемерних контейнерах не дозволяються. Не може бути оновлено.
VolumeMount описує монтування Тому всередині контейнера.
volumeMounts.mountPath (string), обовʼязково
Шлях всередині контейнера, за яким повинен бути змонтований том. Не повинен містити ':'.
volumeMounts.name (string), обовʼязково
Повинно відповідати імені Тому.
volumeMounts.mountPropagation (string)
mountPropagation визначає, як монтування розповсюджуються від хоста до контейнера і навпаки. Коли не встановлено, використовується MountPropagationNone. Це поле є бета-версією в 1.10. Коли
RecursiveReadOnly
встановлено наIfPossible
абоEnabled
,MountPropagation
повинно бутиNone
або невказаним (що стандартно дорівнюєNone
).volumeMounts.readOnly (boolean)
Змонтований як тільки для читання, якщо true, для читання/запису в іншому випадку (false або не вказано). Стандартне значення — false.
volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly
визначає, чи повинні змонтовані в режимі "тільки для читання" ресурси оброблятися рекурсивно.Якщо
ReadOnly
дорівнюєfalse
, це поле не має значення і не повинно бути вказаним. ЯкщоReadOnly
дорівнюєtrue
і це поле встановлено наDisabled
, монтування не виконується рекурсивно в режимі "тільки для читання". Якщо це поле встановлено наIfPossible
, монтування виконується рекурсивно в режимі "тільки для читання", якщо це підтримується контейнерним середовищем. Якщо це поле встановлено наEnabled
, монтування виконується рекурсивно в режимі "тільки для читання", якщо це підтримується контейнерним середовищем, інакше pod не буде запущено, і буде згенеровано помилку з відповідною причиною.Якщо це поле встановлено на
IfPossible
абоEnabled
, значенняMountPropagation
повинно бути встановлено наNone
(або бути невказаним, що стандартно дорівнюєNone
).Якщо це поле не вказано, воно вважається еквівалентним до
Disabled
.volumeMounts.subPath (string)
Шлях всередині тому, з якого має бути змонтований том контейнера. Стандартне значення — "" (корінь тому).
volumeMounts.subPathExpr (string)
Розгорнутий шлях всередині тому, з якого має бути змонтований том контейнера. Поводиться схоже до SubPath, але посилання на змінні середовища $(VAR_NAME) розгортаються за допомогою середовища контейнера. Стандартне значення — "" (корінь тому). SubPathExpr і SubPath є взаємовиключними.
volumeDevices ([]VolumeDevice)
Patch strategy: обʼєднання за ключем
devicePath
Map: унікальні значення ключа devicePath будуть збережені під час злиття
volumeDevices — це список блочних пристроїв, які будуть використані контейнером.
volumeDevice описує зіставлення необробленого блочного пристрою всередині контейнера.
volumeDevices.devicePath (string), обовʼязково
devicePath — це шлях всередині контейнера, на який буде зіставлено пристрій.
volumeDevices.name (string), обовʼязково
name повинно відповідати імені persistentVolumeClaim в Podʼі.
Ресурси
resizePolicy ([]ContainerResizePolicy)
Atomic: буде замінено під час обʼєднання
Політика зміни розміру ресурсів для контейнера.
ContainerResizePolicy представляє політику зміни розміру ресурсів для контейнера.
resizePolicy.resourceName (string), обовʼязково
Назва ресурсу, до якого застосовується ця політика зміни розміру ресурсу. Підтримувані значення: cpu, memory.
resizePolicy.restartPolicy (string), обовʼязково
Політика перезапуску, яку застосовувати при зміні розміру вказаного ресурсу. Якщо не вказано, то стандартно встановлюється NotRequired.
Життєвий цикл
terminationMessagePath (string)
Необовʼязково: Шлях, за яким файл, до якого буде записано повідомлення про завершення контейнера, буде вмонтовано в файлову систему контейнера. Записане повідомлення, призначено для короткого кінцевого статусу, наприклад, повідомлення про помилку виразу. Якщо воно більше 4096 байт, то вузол скоротить його. Загальна довжина повідомлення по всіх контейнерах буде обмежена 12 кб. Стандартне значення — /dev/termination-log. Не може бути оновлено.
terminationMessagePolicy (string)
Вказує, як має бути заповнене повідомлення про завершення. File використовуватиме вміст terminationMessagePath для заповнення повідомлення про статус контейнера при успіху і невдачі. FallbackToLogsOnError використовуватиме останній шматок виводу логу контейнера, якщо файл повідомлення про завершення пустий і контейнер завершився з помилкою. Вивід логу обмежено 2048 байтами або 80 рядками, якщо це менше. Стандартне значення — File. Не може бути оновлено.
restartPolicy (string)
RestartPolicy визначає поведінку перезапуску окремих контейнерів у Podʼі. Це поле може бути встановлено тільки для контейнерів ініціалізації. Ви не можете встановити це поле для ефемерних контейнерів.
Налагодження
stdin (boolean)
Чи повинен цей контейнер виділяти буфер для stdin у середовищі виконання контейнера. Якщо це не встановлено, читання з stdin у контейнері завжди буде призводити до EOF. Стандартно — false.
stdinOnce (boolean)
Чи повинне середовище виконання контейнера закрити канал stdin після того, як він був відкритий одним підключенням. Коли stdin дорівнює true, потік stdin залишатиметься відкритим протягом декількох сеансів підключення. Якщо stdinOnce встановлено у true, stdin відкривається під час запуску контейнера, залишається порожнім до першого підключення клієнта до stdin, а потім залишається відкритим і приймає дані до відключення клієнта, після чого stdin закривається і залишається закритим до перезапуску контейнера. Якщо цей прапорець встановлено у false, процеси контейнера, що читають з stdin, ніколи не отримають EOF. Стандартно — false.
tty (boolean)
Чи повинен цей контейнер виділяти для себе TTY, також вимагає, щоб 'stdin' був true. Стандартно — false.
Контекс безпеки
securityContext (SecurityContext)
SecurityContext визначає параметри безпеки, з якими має працювати контейнер. Якщо встановлено, поля SecurityContext замінять відповідні поля PodSecurityContext. Докладніше: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
SecurityContext містить конфігурацію безпеки, яка буде застосована до контейнера. Деякі поля присутні як у SecurityContext, так і в PodSecurityContext. Якщо обидва встановлені, значення в SecurityContext мають пріоритет.
securityContext.allowPrivilegeEscalation (boolean)
AllowPrivilegeEscalation
керує тим, чи може процес отримати більше привілеїв, ніж батьківський процес. Це булеве значення безпосередньо контролює, чи буде встановлений прапорецьno_new_privs
для процесу контейнера.AllowPrivilegeEscalation
завжди має значенняtrue
за наступних умов:- Контейнер запускається в привілейованому режимі (
Privileged
). - Контейнер має
CAP_SYS_ADMIN
.
Зверніть увагу, що це поле не можна встановити, якщо
spec.os.name
дорівнюєwindows
.- Контейнер запускається в привілейованому режимі (
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile
визначає параметри AppArmor, які використовуються для цього контейнера. Якщо встановлено, цей профіль замінює профіль AppArmor для всього podʼа. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.AppArmorProfile визначає налаштування AppArmor для podʼа або контейнера.
securityContext.appArmorProfile.type (string), обовʼязково
Поле
type
вказує, який тип профілю AppArmor буде застосовано. Дійсні варіанти:Localhost
— профіль, попередньо завантажений на вузлі.RuntimeDefault
— стандартний профіль середовища виконання контейнерів.Unconfined
— без примусового виконання правил AppArmor.
securityContext.appArmorProfile.localhostProfile (string)
localhostProfile
вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.capabilities (Capabilities)
Можливості для додавання/видалення під час запуску контейнерів. Стандарто використовується набір можливостей, наданих середовищем виконання контейнера. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
Додає та видаляє можливості POSIX з працюючих контейнерів.
securityContext.capabilities.add ([]string)
Atomic: буде замінено під час злиття
Додані можливості.
securityContext.capabilities.drop ([]string)
Atomic: буде замінено під час злиття
Видалені можливості.
securityContext.procMount (string)
procMount позначає тип монтування proc, який слід використовувати для контейнерів. Стандартне значення — Default, яке використовує стандартні налаштування середовища виконання контейнера для шляхів тільки для читання та змаскованих шляхів. Це вимагає увімкнення прапорця функції ProcMountType. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.privileged (boolean)
Запуск контейнера у привілейованому режимі. Процеси у привілейованих контейнерах по суті еквівалентні root на хості. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.readOnlyRootFilesystem (boolean)
Чи має цей контейнер кореневу файлову систему тільки для читання. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в
PodSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення
true
, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значенняfalse
, така перевірка не виконується. Також може бути налаштовано вSecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, вказане вSecurityContext
.securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в
SecurityContext
. Якщо значення встановлено як уSecurityContext
, так і вPodSecurityContext
, пріоритет має значення, зазначене вSecurityContext
для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосований до контейнера. Якщо не вказано, середовище виконання контейнера призначить випадковий контекст SELinux для кожного контейнера. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
SELinuxOptions — це мітки, що застосовуються до контейнера
securityContext.seLinuxOptions.level (string)
Level є міткою рівня SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role є міткою ролі SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type є міткою типу SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User є міткою користувача SELinux, що застосовується до контейнера.
securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
securityContext.seccompProfile.type (string), обовʼязкове
type вказує, який тип профілю seccomp буде застосовано. Допустимі варіанти:
- Localhost — має бути використаний профіль, визначений у файлі на вузлі.
- RuntimeDefault — має бути використаний стандартний профіль для середовища виконання контейнерів.
- Unconfined — не застосовується жоден профіль.
securityContext.seccompProfile.localhostProfile (string)
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
securityContext.windowsOptions (WindowsSecurityContextOptions)
Специфічні налаштування для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, використовуються опції з PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є linux.
WindowsSecurityContextOptions містять специфічні для Windows параметри та облікові дані.
securityContext.windowsOptions.gmsaCredentialSpec (string)
GMSACredentialSpec — це місце, де вебхук GMSA (https://github.com/kubernetes-sigs/windows-gmsa) вставляє вміст специфікації облікових даних GMSA, названої полем GMSACredentialSpecName.
securityContext.windowsOptions.gmsaCredentialSpecName (string)
GMSACredentialSpecName — це назва специфікації облікових даних GMSA, яка буде використана.
securityContext.windowsOptions.hostProcess (boolean)
HostProcess визначає, чи слід запускати контейнер як контейнер ʼHost Processʼ. Усі контейнери Pod повинні мати однакове значення HostProcess (не дозволено мати суміш контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess є true, то HostNetwork також повинен бути встановлений у true.
securityContext.windowsOptions.runAsUserName (string)
Імʼя користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
Не дозволяються
ports ([]ContainerPort)
Patch strategy: обʼєднання за ключем
containerPort
Map: унікальні значення за ключами
containerPort, protocol
будуть збережені під час обʼєднанняДля ефемерних контейнерів визначення портів не дозволяється.
ContainerPort представляє мережевий порт в одному контейнері.
ports.containerPort (int32), обовʼязково
Номер порту для відкриття на IP-адресі контейнера. Це повинен бути дійсний номер порту, 0 < x < 65536.
ports.hostIP (string)
IP-адреса хоста, що звʼязується з зовнішнім портом.
ports.hostPort (int32)
Номер порту для відкриття на хості. Якщо вказано, це повинен бути дійсний номер порту, 0 < x < 65536. Якщо вказано HostNetwork, це значення повинно збігатися з ContainerPort. Більшість контейнерів цього не потребують.
ports.name (string)
Якщо вказано, це повинен бути IANA_SVC_NAME і єдиним в межах Podʼа. Кожен іменований порт в Podʼі повинен мати унікальне імʼя. Назва порту, на яку можна посилатися з Service.
ports.protocol (string)
Протокол для порту. Повинен бути UDP, TCP або SCTP. Стандартне значення — "TCP".
resources (ResourceRequirements)
Для ефемерних контейнерів заборонено використовувати ресурси. Ефемерні контейнери використовують вільні ресурси, вже виділені для Podʼа.
resources.claims ([]ResourceClaim)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
Claims містить назви ресурсів, визначених в spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і вимагає включення функціоналу DynamicResourceAllocation.
Це поле є незмінним. Його можна встановити тільки для контейнерів.
ResourceClaim посилається на один запис в PodSpec.ResourceClaims.
resources.claims.name (string), обовʼязково
Імʼя повинно відповідати імені одного запису в pod.spec.resourceClaims Podʼа, де використовується це поле. Це робить цей ресурс доступним всередині контейнера.
resources.claims.request (string)
Request
— це імʼя, вибране для запиту в зазначеній заявці. Якщо поле порожнє, буде доступно все з заявки; в іншому випадку, доступний буде лише результат цього запиту.
resources.limits (map[string]Quantity)
Limits визначає максимальну кількість обчислювальних ресурсів, дозволених. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resources.requests (map[string]Quantity)
Requests описує мінімальну кількість обчислювальних ресурсів, що потрібна. Якщо Requests відсутній для контейнера, він стандартно встановлюється в Limits, якщо це явно вказано, інакше — у значення, визначеного реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
lifecycle (Lifecycle)
Для ефемерних контейнерів заборонено використовувати lifecycle.
Lifecycle описує дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Для обробників життєвого циклу PostStart і PreStop управління контейнером блокується, поки дія не буде завершена, якщо процес контейнера виявляється несправним, тоді обробник переривається.
lifecycle.postStart (LifecycleHandler)
PostStart викликається негайно після створення контейнера. Якщо обробник не вдалося виконати, контейнер буде завершено і перезапущено згідно зі своєю політикою перезапуску. Інше управління контейнером блокується, поки хук не завершиться. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
lifecycle.preStop (LifecycleHandler)
PreStop викликається негайно перед тим, як контейнер буде завершено через запит API або подію управління, таку як невдача проби справності/запуску, випередження, скорочення ресурсів тощо. Обробник не викликається, якщо контейнер впаде або закінчить роботу. Період перебігу належного завершення підраховується до виконання хуку PreStop. Незалежно від результату обробника, контейнер в кінцевому підсумку завершиться протягом періоду належного завершення Pod (якщо він не буде затриманий завершенням залишкових операцій). Інше управління контейнером блокується, поки хук не завершиться або досягне періоду належного завершення. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
livenessProbe (Probe)
Проби не дозволені для ефемерних контейнерів.
readinessProbe (Probe)
Проби не дозволені для ефемерних контейнерів.
startupProbe (Probe)
Проби не дозволені для ефемерних контейнерів.
Обробник життєвого циклу
Обробник життєвого циклу (LifecycleHandler) визначає конкретну дію, яку слід виконати в хуці життєвого циклу. Має бути вказане тільки одне з полів, за винятком TCPSocket.
exec (ExecAction)
Exec визначає дію, яку слід виконати.
ExecAction описує дію "виконати в контейнері".
exec.command ([]string)
Atomic: буде замінено під час злиття
Command — це командний рядок для виконання всередині контейнера, робоча тека для команди — корінь ('/') у файловій системі контейнера. Команда виконується безпосередньо, а не в оболонці, тому традиційні команди оболонки ('|', тощо) не працюватимуть. Для використання оболонки потрібно явно викликати цю оболонку. Статус виходу 0 вважається готовим/справним, а ненульовий — несправним.
httpGet (HTTPGetAction)
HTTPGet визначає HTTP-запит, який слід виконати.
HTTPGetAction описує дію на основі HTTP Get-запитів.
httpGet.port (IntOrString), обовʼязково
Назва або номер порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
httpGet.host (string)
Імʼя хосту для підключення, стандартно використовується IP-адреса Podʼа. Ймовірно, вам потрібно встановити "Host" в httpHeaders замість цього.
httpGet.httpHeaders ([]HTTPHeader)
Atomic: буде замінено під час злиття
Власні заголовки для встановлення в запиті. HTTP дозволяє повторювані заголовки.
HTTPHeader описує власний заголовок, який буде використовуватись в HTTP-пробах.
httpGet.httpHeaders.name (string), обовʼязково
Назва поля заголовка. Воно буде канонізовано при виведенні, тому імена, що відрізняються регістром, будуть сприйматись як один і той самий заголовок.
httpGet.httpHeaders.value (string), обовʼязково
Значення поля заголовка.
httpGet.path (string)
Шлях для доступу до HTTP-сервера.
httpGet.scheme (string)
Схема для підключення до хоста. Стандартне значення — HTTP.
sleep (SleepAction)
Sleep представляє тривалість, протягом якої контейнер повинен бездіяти перед завершенням.
SleepAction описує дію "sleep".
sleep.seconds (int64), обовʼязково
Seconds — кількість секунд для sleep.
tcpSocket (TCPSocketAction)
Застаріло. TCPSocket НЕ підтримується як обробник життєвого циклу та зберігається для зворотної сумісності. Валідації цього поля не проводиться, і хуки життєвого циклу зазнають невдачі під час виконання, коли вказано обробник tcp.
TCPSocketAction описує дію на основі відкриття сокета
tcpSocket.port (IntOrString), обовʼязково
Номер або назва порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
tcpSocket.host (string)
Додатково: Імʼя хоста для підключення, стандартно використовується IP-адреса Podʼа.
NodeAffinity
Node affinity — це група правил планування вузлів за спорідненістю.
preferredDuringSchedulingIgnoredDuringExecution ([]PreferredSchedulingTerm)
Atomic: буде замінено під час злиття
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо вузол відповідає відповідним matchExpressions; вузол(и) з найвищою сумою є найпріоритетнішими.
Порожній термін пріоритету планування відповідає всім об’єктам з неявною вагою 0 (тобто, він не діє). Нульовий термін пріоритету планування не відповідає жодному обʼєкту (тобто, також не діє).
preferredDuringSchedulingIgnoredDuringExecution.preference (NodeSelectorTerm), обов’язковий
Термін селектора вузлів, пов’язаний з відповідною вагою.
Нульовий або порожній термін селектора вузлів не відповідає жодному обʼєкту. Вимоги до них обʼєднані за допомогою операції AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
- preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за мітками вузлів.
- preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за полями вузлів.
preferredDuringSchedulingIgnoredDuringExecution.weight (int32), обов’язковий
Вага, пов’язана з відповідним nodeSelectorTerm, у діапазоні 1-100.
requiredDuringSchedulingIgnoredDuringExecution (NodeSelector)
Якщо вимоги спорідненості, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги спорідненості, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення), система може або не може спробувати врешті-решт виселити Pod з його вузла.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів за мітками до набору вузлів; тобто він представляє OR селекторів, представлених термінами селектора вузлів.
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms ([]NodeSelectorTerm), обов’язковий
Atomic: буде замінено під час злиття
Обов’язковий. Список термінів селектора вузлів. Терміни обʼєднані за допомогою операції OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за мітками вузлів.
requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за полями вузлів.
PodAffinity
Pod affinity — це група правил планування між Podʼами за спорідненістю.
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
Atomic: буде замінено під час злиття
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька з цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо на вузлі є Podʼи, які відповідають відповідному podAffinityTerm; вузол(и) з найвищою сумою є найпріоритетнішими.
Ваги всіх відповідних полів WeightedPodAffinityTerm додаються для кожного вузла, щоб знайти найпріоритетніший(і) вузол(и).
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), обов’язковий
Обов’язковий. Термін спорідненості Podʼа, пов’язаний з відповідною вагою.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), обов’язковий
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен, де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
Запит за мітками до набору ресурсів, у даному випадку Podʼів. Якщо він дорівнює null, цей PodAffinityTerm не збігається з жодним Pod'ом.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey in (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey notin (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
Atomic: буде замінено під час злиття
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
preferredDuringSchedulingIgnoredDuringExecution.weight (int32), обов’язковий
Вага, пов’язана з відповідним podAffinityTerm, у діапазоні 1-100.
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
Atomic: буде замінено під час злиття
Якщо вимоги спорідненісті, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги спорідненісті, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення міток Podʼа), система може або не може спробувати врешті-решт виселити Pod з його вузла. Коли є кілька елементів, списки вузлів, що відповідають кожному podAffinityTerm, перетинаються, тобто всі терміни мають бути виконані.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), обов’язковий
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен, де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
Запит за мітками до набору ресурсів, у даному випадку Podʼів. Якщо він дорівнює null, цей PodAffinityTerm не збігається з жодним Podʼом.
requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey in (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey notin (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
Atomic: буде замінено під час злиття
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
PodAntiAffinity
Pod anti affinity — це група правил планування між Podʼами за анти-спорідненістю.
preferredDuringSchedulingIgnoredDuringExecution ([]WeightedPodAffinityTerm)
Atomic: буде замінено під час злиття
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам анти-спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька з цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази анти-спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо на вузлі є Podʼи, які відповідають відповідному podAffinityTerm; вузол(и) з найвищою сумою є найпріоритетнішими.
Ваги всіх відповідних полів WeightedPodAffinityTerm додаються для кожного вузла, щоб знайти найпріоритетніший(і) вузол(и).
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm (PodAffinityTerm), обов’язковий
Обов’язковий. Термін спорідненості Podʼа, пов’язаний з відповідною вагою.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey (string), обов’язковий
Цей Pod повинен бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен. Розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector (LabelSelector)
Запит за мітками до набору ресурсів, у даному випадку Podʼів. Якщо він дорівнює null, цей PodAffinityTerm не збігається з жодним Podʼом.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey in (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey notin (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector (LabelSelector)
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces ([]string)
Atomic: буде замінено під час злиття
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
preferredDuringSchedulingIgnoredDuringExecution.weight (int32), обов’язковий
Вага, пов’язана з відповідним podAffinityTerm, у діапазоні 1-100.
requiredDuringSchedulingIgnoredDuringExecution ([]PodAffinityTerm)
Atomic: буде замінено під час злиття
Якщо вимоги анти-спорідненості, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги анти-спорідненості, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення міток Podʼа), система може або не може спробувати врешті-решт виселити Pod з його вузла. Коли є кілька елементів, списки вузлів, що відповідають кожному podAffinityTerm, перетинаються, тобто всі терміни мають бути виконані.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
requiredDuringSchedulingIgnoredDuringExecution.topologyKey (string), обов’язковий
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен. Розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
requiredDuringSchedulingIgnoredDuringExecution.labelSelector (LabelSelector)
Запит за мітками до набору ресурсів, у даному випадку Podʼів. Якщо він дорівнює null, цей PodAffinityTerm не збігається з жодним Podʼом.
requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey in (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys ([]string)
Atomic: буде замінено під час злиття
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з
labelSelector
якkey notin (value)
, щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector (LabelSelector)
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
requiredDuringSchedulingIgnoredDuringExecution.namespaces ([]string)
Atomic: буде замінено під час злиття
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
Проба
Проба описує перевірку стану, яка виконується для контейнера, щоб визначити, чи він справний або готовий приймати трафік.
exec (ExecAction)
Exec визначає дію, яку потрібно виконати.
ExecAction описує дію "виконати в контейнері".
exec.command ([]string)
Atomic: буде замінено під час злиття
Command — це командний рядок для виконання всередині контейнера, робоча тека для команди — корінь ('/') у файловій системі контейнера. Команда виконується безпосередньо, а не в оболонці, тому традиційні команди оболонки ('|', тощо) не працюватимуть. Для використання оболонки потрібно явно викликати цю оболонку. Статус виходу 0 вважається готовим/справним, а ненульовий — несправним.
httpGet (HTTPGetAction)
HTTPGet визначає HTTP-запит для виконання.
HTTPGetAction описує дію на основі HTTP GET запитів.
httpGet.port (IntOrString), обовʼязково
Назва або номер порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
httpGet.host (string)
Імʼя хосту для підключення, стандартно використовується IP-адреса Podʼа. Ймовірно, вам потрібно встановити "Host" в httpHeaders замість цього.
httpGet.httpHeaders ([]HTTPHeader)
Atomic: буде замінено під час злиття
Власні заголовки для встановлення в запиті. HTTP дозволяє повторювані заголовки.
HTTPHeader описує власний заголовок, який буде використовуватись в HTTP-пробах.
httpGet.httpHeaders.name (string), обовʼязково
Назва поля заголовка. Воно буде канонізовано при виведенні, тому імена, що відрізняються регістром, будуть сприйматись як один і той самий заголовок.
httpGet.httpHeaders.value (string), обовʼязково
Значення поля заголовка.
httpGet.path (string)
Шлях для доступу на HTTP сервері.
httpGet.scheme (string)
Схема для підключення до хоста. Стандартне значення — HTTP.
tcpSocket (TCPSocketAction)
TCPSocket визначає дію, що включає TCP-порт.
TCPSocketAction описує дію на основі відкриття сокету.
tcpSocket.port (IntOrString), обовʼязково
Номер або назва порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
tcpSocket.host (string)
Додатково: Імʼя хоста для підключення, стандартно використовується IP-адреса Podʼа.
initialDelaySeconds (int32)
Кількість секунд після запуску контейнера перед початком перевірки на життєздатність. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
terminationGracePeriodSeconds (int64)
Необовʼязкова тривалість у секундах, необхідна для завершення роботи Podʼа після збою перевірки. Період належного завершення — це тривалість у секундах після того, як процесам у Podʼі надіслано сигнал про завершення і час до примусової зупинки процесів сигналом kill. Встановіть цю величину більше, ніж очікуваний час завершення вашого процесу. Якщо це значення є nil, буде використано terminationGracePeriodSeconds Podʼа. В іншому випадку, це значення перекриває значення, надане у специфікації Podʼа. Значення має бути невідʼємним числом. Значення нуль означає негайну зупинку через сигнал kill (без можливості завершення). Це поле є бета-функцією і вимагає увімкнення gate ProbeTerminationGracePeriod. Мінімальне значення — 1. Якщо не встановлено, використовується spec.terminationGracePeriodSeconds.
periodSeconds (int32)
Як часто (у секундах) виконувати перевірку. Стандартне значення — 10 секунд. Мінімальне значення — 1.
timeoutSeconds (int32)
Кількість секунд після якої перевірка завершується з тайм-аутом. Стандартне значення — 1 секунда. Мінімальне значення — 1. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
failureThreshold (int32)
Мінімальна кількість послідовних збоїв, щоб перевірка вважалася невдалою після того, як вона вже пройшла успішно. Стандартне значення — 3. Мінімальне значення — 1.
successThreshold (int32)
Мінімальна кількість послідовних успішних перевірок, щоб вважати перевірку успішною після того, як вона не вдалася. Стандартне значення — 1. Має бути 1 для liveness та startup. Мінімальне значення — 1.
grpc (GRPCAction)
GRPC визначає дію, що включає GRPC-порт.
grpc.port (int32), обовʼязково
Номер порту GRPC сервісу. Номер має бути в діапазоні від 1 до 65535.
grpc.service (string)
Service — це імʼя сервісу, яке потрібно вказати в GRPC HealthCheckRequest (див. https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
Якщо це не вказано, то стандартна поведінка визначається GRPC.
PodStatus
PodStatus представляє інформацію про стан Podʼа. Стан може відставати від фактичного стану системи, особливо якщо вузол, на якому розміщений Pod, не може звʼязатися з панеллю управління.
nominatedNodeName (string)
nominatedNodeName
встановлюється тільки тоді, коли цей Pod випереджає інші Podʼи на вузлі, але не може бути негайно розміщений, оскільки жертвам випередження надається час для завершення роботи. Це поле не гарантує, що Pod буде розміщений на цьому вузлі. Планувальник може вирішити розмістити Pod в іншому місці, якщо інші вузли стануть доступними раніше. Планувальник також може вирішити надати ресурси на цьому вузлі Podʼу вищого пріоритету, який створюється після вилучення. В результаті це поле може відрізнятися відPodSpec.nodeName
, коли Pod розміщується.hostIP (string)
hostIP
містить IP-адресу хоста, до якого призначено Pod. Пусте, якщо Pod ще не запущено. Pod може бути призначений на вузол, у якого є проблема з kubelet, що означає, щоHostIP
не буде оновлено, навіть якщо вузол призначено Podʼу.hostIPs ([]HostIP)
Patch strategy: злиття за ключем
ip
Atomic: буде замінено під час злиття
hostIPs
містить IP-адреси, виділені хосту. Якщо це поле задано, перший запис повинен відповідати полюhostIP
. Цей список пустий, якщо Pod ще не запущено. Pod може бути призначений на вузол, у якого є проблема з kubelet, що означає, щоHostIPs
не буде оновлено, навіть якщо вузол призначено цьому Podʼу.HostIP представляє одну IP-адресу, виділену хосту.
hostIPs.ip (string), обовʼязково
IP — це IP-адреса, призначена хосту.
startTime (Time)
RFC 3339 дата і час, коли обʼєкт був підтверджений Kubelet. Це відбувається перед тим, як Kubelet завантажив образ контейнера(ів) для Podʼа.
Time — це обгортка навколо time.Time, яка підтримує правильну серіалізацію в YAML і JSON. Надаються обгортки для багатьох фабричних методів, які пропонує пакет time.
phase (string)
phase
Podʼа — це просте, високорівневе резюме про те, на якому етапі свого життєвого циклу знаходиться Pod. Массив умов, поляreason
іmessage
, а також масиви статусів окремих контейнерів містять більше деталей про стан Podʼа. Існує пʼять можливих значень фаз:Pending: Pod прийнято системою Kubernetes, але один або більше образів контейнерів ще не створено. Це включає час до розміщення, а також час, витрачений на завантаження образів через мережу, що може зайняти деякий час.
Running: Pod був привʼязаний до вузла, і всі контейнери були створені. Принаймні один контейнер все ще працює або знаходиться в процесі запуску чи перезапуску.
Succeeded: всі контейнери в Podʼі завершили роботу успішно і не будуть перезапускатися.
Failed: всі контейнери в Podʼі завершили роботу, і принаймні один контейнер завершився з помилкою. Контейнер або завершився з ненульовим статусом, або був завершений системою.
Unknown: з якоїсь причини стан Podʼа не вдалося отримати, зазвичай через помилку у звʼязку з хостом Podʼа.
Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-phase
message (string)
Повідомлення, зрозуміле людині, що вказує на деталі, чому Pod знаходиться в цьому стані.
reason (string)
Коротке повідомлення у форматі CamelCase, що вказує на деталі, чому Pod знаходиться в цьому стані, наприклад, ʼEvictedʼ.
podIP (string)
podIP
— IP-адреса, виділена Podʼа. Доступна для маршрутизації принаймні в межах кластера. Пусте, якщо ще не виділено.podIPs ([]PodIP)
Patch strategy: злиття за ключем
ip
Map: унікальні значення ключа ip будуть збережені під час злиття
podIPs
містить IP-адреси, виділені Podʼу. Якщо це поле задано, 0-й запис повинен відповідати полюpodIP
. Podʼам може бути виділено не більше одного значення для кожного з IPv4 та IPv6. Цей список пустий, якщо IP-адреси ще не виділено.PodIP представляє одну IP-адресу, виділену Podʼу.
podIPs.ip (string), обовʼязково
IP — це IP-адреса, призначена Podʼу.
conditions ([]PodCondition)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Поточний стан обслуговування Podʼа. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
PodCondition містить деталі поточного стану цього Podʼа.
conditions.status (string), обовʼязково
Статус стану. Може бути True, False, Unknown. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
conditions.type (string), обовʼязково
Тип є типом стану. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-conditions
conditions.lastProbeTime (Time)
Останній час, коли ми перевіряли стан.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastTransitionTime (Time)
Останній час, коли стан перейшов з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, що вказує на деталі останнього переходу.
conditions.reason (string)
Унікальна, однослівна, у CamelCase причина останнього переходу умови.
qosClass (string)
Класифікація якості обслуговування (QOS), присвоєна Podʼу на основі вимог до ресурсів. Дивіться тип PodQOSClass для доступних класів QOS. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/#quality-of-service-classes
initContainerStatuses ([]ContainerStatus)
Atomic: буде замінено під час злиття
Список містить один запис на кожен контейнер ініціалізації в маніфесті. Найбільш успішний контейнер ініціалізації матиме ready = true, найбільш нещодавно запущений контейнер матиме startTime встановлений. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus містить деталі поточного стану цього контейнера.
initContainerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
initContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
AllocatedResourcesStatus представляє статус різних ресурсів, виділених для цього podʼа.
initContainerStatuses.allocatedResourcesStatus.name (string), обовʼязково
Назва ресурсу. Має бути унікальною в межах podʼа та відповідати одному з ресурсів зі специфікації podʼа.
initContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
initContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), обовʼязково
ResourceID є унікальним ідентифікатором ресурсу. Дивіться тип ResourceID для отримання додаткової інформації.
initContainerStatuses.allocatedResourcesStatus.resources.health (string)
Health ресурсу. Може бути одним з:
- Healthy: працює нормально
- Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
- Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
initContainerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
initContainerStatuses.image (string), обовʼязково
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
initContainerStatuses.imageID (string), обовʼязково
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
initContainerStatuses.lastState (ContainerState)
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
initContainerStatuses.lastState.running (ContainerStateRunning)
Відомості про запущений контейнер
initContainerStatuses.lastState.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
initContainerStatuses.lastState.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
initContainerStatuses.lastState.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
initContainerStatuses.lastState.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
initContainerStatuses.lastState.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
initContainerStatuses.lastState.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
initContainerStatuses.lastState.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
initContainerStatuses.lastState.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
initContainerStatuses.lastState.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
initContainerStatuses.lastState.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
initContainerStatuses.lastState.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
initContainerStatuses.name (string), обовʼязково
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
initContainerStatuses.ready (boolean), обовʼязково
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
initContainerStatuses.resources (ResourceRequirements)
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
initContainerStatuses.resources.claims ([]ResourceClaim)
Map: унікальні значення ключа name будуть збережені під час злиття
Claims перелік назв ресурсів, визначених у spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і потребує включення функціональної можливості DynamicResourceAllocation.
Це поле незмінне. Воно може бути встановлено лише для контейнерів.
ResourceClaim посилається на один запис у PodSpec.ResourceClaims.
initContainerStatuses.resources.claims.name (string), обовʼязково
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
initContainerStatuses.resources.claims.request (string)
Request є назвою, обраною для запиту в зазначеній заявці. Якщо порожньо, всі ресурси з заявки стають доступними, інакше лише результат цього запиту.
initContainerStatuses.resources.limits (map[string]Quantity)
Limits описує максимальну кількість дозволених обчислювальних ресурсів. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
initContainerStatuses.resources.requests (map[string]Quantity)
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
initContainerStatuses.restartCount (int32), обовʼязково
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
initContainerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
initContainerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
initContainerStatuses.state.running (ContainerStateRunning)
Деталі про запущений контейнер
initContainerStatuses.state.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
initContainerStatuses.state.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
initContainerStatuses.state.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
initContainerStatuses.state.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
initContainerStatuses.state.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
initContainerStatuses.state.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
initContainerStatuses.state.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
initContainerStatuses.state.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
initContainerStatuses.state.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
initContainerStatuses.state.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
initContainerStatuses.state.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
initContainerStatuses.user (ContainerUser)
User представляє інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнера
ContainerUser представляє інформацію про ідентифікацію користувача
initContainerStatuses.user.linux (LinuxContainerUser)
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
initContainerStatuses.user.linux.gid (int64), обовʼязково
GID є основним gid, спочатку прикріпленим до першого процесу в контейнері
initContainerStatuses.user.linux.uid (int64), обовʼязково
UID є основним uid, спочатку прикріпленим до першого процесу в контейнері
initContainerStatuses.user.linux.supplementalGroups ([]int64)
Atomic: буде замінено під час злиття
SupplementalGroups є додатковими групами, спочатку прикріпленими до першого процесу в контейнері
initContainerStatuses.volumeMounts ([]VolumeMountStatus)
Patch strategy: злиття за ключем
mountPath
Map: унікальні значення ключа mountPath будуть збережені під час злиття
Стан монтування томів.
VolumeMountStatus показує стан монтування томів.
initContainerStatuses.volumeMounts.mountPath (string), обовʼязково
MountPath відповідає оригінальному VolumeMount.
initContainerStatuses.volumeMounts.name (string), обовʼязково
Name відповідає назві оригінального VolumeMount.
initContainerStatuses.volumeMounts.readOnly (boolean)
ReadOnly відповідає оригінальному VolumeMount.
initContainerStatuses.volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
containerStatuses ([]ContainerStatus)
Atomic: буде замінено під час злиття
Список містить один запис на кожен контейнер в маніфесті. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status
ContainerStatus містить деталі поточного стану цього контейнера.
containerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
containerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
AllocatedResourcesStatus представляє статус різних ресурсів, виділених для цього podʼа.
containerStatuses.allocatedResourcesStatus.name (string), обовʼязково
Назва ресурсу. Має бути унікальною в межах podʼа та відповідати одному з ресурсів зі специфікації podʼа.
containerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
containerStatuses.allocatedResourcesStatus.resources.resourceID (string), обовʼязково
ResourceID є унікальним ідентифікатором ресурсу. Дивіться тип ResourceID для отримання додаткової інформації.
containerStatuses.allocatedResourcesStatus.resources.health (string)
Health ресурсу. Може бути одним з:
- Healthy: працює нормально
- Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
- Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
containerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
containerStatuses.image (string), обовʼязково
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
containerStatuses.imageID (string), обовʼязково
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
containerStatuses.lastState (ContainerState)
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
containerStatuses.lastState.running (ContainerStateRunning)
Відомості про запущений контейнер
containerStatuses.lastState.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
containerStatuses.lastState.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
containerStatuses.lastState.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
containerStatuses.lastState.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
containerStatuses.lastState.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
containerStatuses.lastState.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
containerStatuses.lastState.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
containerStatuses.lastState.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
containerStatuses.lastState.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
containerStatuses.lastState.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
containerStatuses.lastState.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
containerStatuses.name (string), обовʼязково
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
containerStatuses.ready (boolean), обовʼязково
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
containerStatuses.resources (ResourceRequirements)
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
containerStatuses.resources.claims ([]ResourceClaim)
Map: унікальні значення ключа name будуть збережені під час злиття
Claims перелік назв ресурсів, визначених у spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і потребує включення функціональної можливості DynamicResourceAllocation.
Це поле незмінне. Воно може бути встановлено лише для контейнерів.
ResourceClaim посилається на один запис у PodSpec.ResourceClaims.
containerStatuses.resources.claims.name (string), обовʼязково
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
containerStatuses.resources.claims.request (string)
Request є назвою, обраною для запиту в зазначеній заявці. Якщо порожньо, всі ресурси з заявки стають доступними, інакше лише результат цього запиту.
containerStatuses.resources.limits (map[string]Quantity)
Limits описує максимальну кількість дозволених обчислювальних ресурсів. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
containerStatuses.resources.requests (map[string]Quantity)
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
containerStatuses.restartCount (int32), обовʼязково
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
containerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
containerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
containerStatuses.state.running (ContainerStateRunning)
Деталі про запущений контейнер
containerStatuses.state.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
containerStatuses.state.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
containerStatuses.state.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
containerStatuses.state.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
containerStatuses.state.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
containerStatuses.state.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
containerStatuses.state.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
containerStatuses.state.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
containerStatuses.state.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
containerStatuses.state.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
containerStatuses.state.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
containerStatuses.user (ContainerUser)
User представляє інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнера
ContainerUser представляє інформацію про ідентифікацію користувача
containerStatuses.user.linux (LinuxContainerUser)
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
containerStatuses.user.linux.gid (int64), обовʼязково
GID є основним gid, спочатку прикріпленим до першого процесу в контейнері
containerStatuses.user.linux.uid (int64), обовʼязково
UID є основним uid, спочатку прикріпленим до першого процесу в контейнері
containerStatuses.user.linux.supplementalGroups ([]int64)
Atomic: буде замінено під час злиття
SupplementalGroups є додатковими групами, спочатку прикріпленими до першого процесу в контейнері
containerStatuses.volumeMounts ([]VolumeMountStatus)
Patch strategy: злиття за ключем
mountPath
Map: унікальні значення ключа mountPath будуть збережені під час злиття
Стан монтування томів.
VolumeMountStatus показує стан монтування томів.
containerStatuses.volumeMounts.mountPath (string), обовʼязково
MountPath відповідає оригінальному VolumeMount.
containerStatuses.volumeMounts.name (string), обовʼязково
Name відповідає назві оригінального VolumeMount.
containerStatuses.volumeMounts.readOnly (boolean)
ReadOnly відповідає оригінальному VolumeMount.
containerStatuses.volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
ephemeralContainerStatuses ([]ContainerStatus)
Atomic: буде замінено під час злиття
Статус будь-яких ефемерних контейнерів, які працювали в цьому Podʼі.
ContainerStatus містить деталі поточного стану цього контейнера.
ephemeralContainerStatuses.allocatedResources (map[string]Quantity)
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
ephemeralContainerStatuses.allocatedResourcesStatus ([]ResourceStatus)
Patch strategy: злиття за ключем
name
Map: унікальні значення ключа name будуть збережені під час злиття
AllocatedResourcesStatus представляє статус різних ресурсів, виділених для цього podʼа.
ephemeralContainerStatuses.allocatedResourcesStatus.name (string), обовʼязково
Назва ресурсу. Має бути унікальною в межах podʼа та відповідати одному з ресурсів зі специфікації podʼа.
ephemeralContainerStatuses.allocatedResourcesStatus.resources ([]ResourceHealth)
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
ephemeralContainerStatuses.allocatedResourcesStatus.resources.resourceID (string), обовʼязково
ResourceID є унікальним ідентифікатором ресурсу. Дивіться тип ResourceID для отримання додаткової інформації.
ephemeralContainerStatuses.allocatedResourcesStatus.resources.health (string)
Health ресурсу. Може бути одним з:
- Healthy: працює нормально
- Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
- Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
ephemeralContainerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
ephemeralContainerStatuses.image (string), обовʼязково
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
ephemeralContainerStatuses.imageID (string), обовʼязково
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
ephemeralContainerStatuses.lastState (ContainerState)
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
ephemeralContainerStatuses.lastState.running (ContainerStateRunning)
Відомості про запущений контейнер
ephemeralContainerStatuses.lastState.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
ephemeralContainerStatuses.lastState.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
ephemeralContainerStatuses.lastState.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
ephemeralContainerStatuses.lastState.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ephemeralContainerStatuses.lastState.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ephemeralContainerStatuses.lastState.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
ephemeralContainerStatuses.lastState.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
ephemeralContainerStatuses.lastState.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
ephemeralContainerStatuses.lastState.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
ephemeralContainerStatuses.lastState.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
ephemeralContainerStatuses.lastState.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
ephemeralContainerStatuses.name (string), обовʼязково
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
ephemeralContainerStatuses.ready (boolean), обовʼязково
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
ephemeralContainerStatuses.resources (ResourceRequirements)
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
ephemeralContainerStatuses.resources.claims ([]ResourceClaim)
Map: унікальні значення ключа name будуть збережені під час злиття
Claims перелік назв ресурсів, визначених у spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і потребує включення функціональної можливості DynamicResourceAllocation.
Це поле незмінне. Воно може бути встановлено лише для контейнерів.
ResourceClaim посилається на один запис у PodSpec.ResourceClaims.
ephemeralContainerStatuses.resources.claims.name (string), обовʼязково
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
ephemeralContainerStatuses.resources.claims.request (string)
Request є назвою, обраною для запиту в зазначеній заявці. Якщо порожньо, всі ресурси з заявки стають доступними, інакше лише результат цього запиту.
ephemeralContainerStatuses.resources.limits (map[string]Quantity)
Limits описує максимальну кількість дозволених обчислювальних ресурсів. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
ephemeralContainerStatuses.resources.requests (map[string]Quantity)
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
ephemeralContainerStatuses.restartCount (int32), обовʼязково
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
ephemeralContainerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
ephemeralContainerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
ephemeralContainerStatuses.state.running (ContainerStateRunning)
Деталі про запущений контейнер
ephemeralContainerStatuses.state.terminated (ContainerStateTerminated)
Відомості про контейнер, який завершив свою роботу
ContainerStateTerminated є станом контейнера, який завершив свою роботу.
ephemeralContainerStatuses.state.terminated.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'.
ephemeralContainerStatuses.state.terminated.exitCode (int32), обовʼязково
Код виходу з останнього завершення роботи контейнера
ephemeralContainerStatuses.state.terminated.startedAt (Time)
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ephemeralContainerStatuses.state.terminated.finishedAt (Time)
Час, коли контейнер востаннє завершив свою роботу
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ephemeralContainerStatuses.state.terminated.message (string)
Повідомлення щодо останнього завершення роботи контейнера
ephemeralContainerStatuses.state.terminated.reason (string)
(коротка) причина останнього завершення роботи контейнера
ephemeralContainerStatuses.state.terminated.signal (int32)
Сигнал з останнього завершення роботи контейнера
ephemeralContainerStatuses.state.waiting (ContainerStateWaiting)
Деталі про контейнер, що очікує
ContainerStateWaiting є станом контейнера, що очікує.
ephemeralContainerStatuses.state.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
ephemeralContainerStatuses.state.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
ephemeralContainerStatuses.user (ContainerUser)
User представляє інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнера
ContainerUser представляє інформацію про ідентифікацію користувача
ephemeralContainerStatuses.user.linux (LinuxContainerUser)
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
ephemeralContainerStatuses.user.linux.gid (int64), обовʼязково
GID є основним gid, спочатку прикріпленим до першого процесу в контейнері
ephemeralContainerStatuses.user.linux.uid (int64), обовʼязково
UID є основним uid, спочатку прикріпленим до першого процесу в контейнері
ephemeralContainerStatuses.user.linux.supplementalGroups ([]int64)
Atomic: буде замінено під час злиття
SupplementalGroups є додатковими групами, спочатку прикріпленими до першого процесу в контейнері
ephemeralContainerStatuses.volumeMounts ([]VolumeMountStatus)
Patch strategy: злиття за ключем
mountPath
Map: унікальні значення ключа mountPath будуть збережені під час злиття
Стан монтування томів.
VolumeMountStatus показує стан монтування томів.
ephemeralContainerStatuses.volumeMounts.mountPath (string), обовʼязково
MountPath відповідає оригінальному VolumeMount.
ephemeralContainerStatuses.volumeMounts.name (string), обовʼязково
Name відповідає назві оригінального VolumeMount.
ephemeralContainerStatuses.volumeMounts.readOnly (boolean)
ReadOnly відповідає оригінальному VolumeMount.
ephemeralContainerStatuses.volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
resourceClaimStatuses ([]PodResourceClaimStatus)
Patch strategies: retainKeys, обʼєднання по ключу
name
Map: унікальні значення по ключу name будуть збережені під час обʼєднання
Статус ресурсних заявок.
PodResourceClaimStatus зберігається у PodStatus для кожної PodResourceClaim, яка посилається на ResourceClaimTemplate. Він зберігає згенеровану назву для відповідної ResourceClaim.
resourceClaimStatuses.name (string), обовʼязково
Імʼя унікально ідентифікує цю ресурсну заявку всередині Podʼа. Воно має відповідати імені в pod.spec.resourceClaims, що означає, що рядок повинен бути DNS_LABEL.
resourceClaimStatuses.resourceClaimName (string)
ResourceClaimName є назвою ResourceClaim, яка була згенерована для podʼа в просторі імен podʼа. Якщо це поле не встановлено, то створення ResourceClaim не було необхідним. У цьому випадку запис pod.spec.resourceClaims можна ігнорувати.
resize (string)
Статус бажаної зміни розміру ресурсів для контейнерів Podʼа. Він порожній, якщо немає очікуваної зміни розміру ресурсів. Будь-які зміни в ресурсах контейнера автоматично встановлять це на "Proposed".
PodList
PodList — це список Podʼів.
items ([]Pod), обовʼязково
Список Podʼів. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md
apiVersion (string)
APIVersion визначає версію схеми цього подання обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
kind (string)
Kind — це рядкове значення, яке представляє REST-ресурс, який представляє цей обʼєкт. Сервери можуть вивести це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata (ListMeta)
Стандартні метадані списку. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
Операції
get
отримати вказаний Pod
HTTP запит
GET /api/v1/namespaces/{namespace}/pods/{name}
Параметри
name (у шляху): string, обовʼязково
назва Podʼа
namespace (у шляху): string, обовʼязково
pretty (у запиті): string
Відповідь
200 (Pod): OK
401: Unauthorized
get
отримати ефемерні контейнери вказаного Podʼа
HTTP запит
GET /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Параметри
name (у шляху): string, обовʼязково
назва Podʼа
namespace (у шляху): string, обовʼязково
pretty (у запиті): string
Відповідь
200 (Pod): OK
401: Unauthorized
get
отримати лог вказаного Podʼа
HTTP запит
GET /api/v1/namespaces/{namespace}/pods/{name}/log
Параметри
name (у шляху): string, обовʼязково
назва Podʼа
namespace (у шляху): string, обовʼязково
container (у запиті): string
Контейнер, для якого потрібно виводити логи. Стандартно виводяться тільки логи контейнера, якщо в Podʼі є тільки один контейнер.
follow (у запиті): boolean
Слідкувати за потоком логу Podʼа. Стандартне значення — false.
insecureSkipTLSVerifyBackend (у запиті): boolean
insecureSkipTLSVerifyBackend вказує, що apiserver не повинен підтверджувати дійсність сертифікату обслуговуючого програмного забезпечення, з яким він зʼєднується. Це зробить HTTPS-зʼєднання між apiserver та обслуговуючим програмним забезпеченням ненадійним. Це означає, що apiserver не може підтвердити, що дані логу, які він отримує, отримано від реального kubelet. Якщо kubelet налаштований для підтвердження уповноваження TLS apiserver, це не означає, що зʼєднання з реальним kubelet вразливе до атаки посередника (наприклад, зловмисник не зможе перехопити фактичні дані логу, що надходять від реального kubelet).
limitBytes (у запиті): integer
Якщо задано, кількість байтів, які слід прочитати з сервера, перш ніж завершити виведення логу. Це може не показувати повністю останню лінію логу, і може повернути трохи більше або трохи менше, ніж вказаний обмежувач.
pretty (у запиті): string
previous (у запиті): boolean
Повертати логи попередньо завершених контейнерів. Стандартне значення — false.
sinceSeconds (у запиті): integer
Відносний час у секундах до поточного часу, з якого показувати логи. Якщо це значення передує часу запуску Podʼа, будуть повернуті лише логи з часу запуску Podʼа. Якщо це значення в майбутньому, жодних логів не буде повернено. Можна вказати тільки один з sinceSeconds або sinceTime.
tailLines (у запиті): integer
Якщо задано, кількість рядків з кінця логу, які слід показати. Якщо не вказано, логи показуються з моменту створення контейнера, або відносно sinceSeconds або sinceTime.
timestamps (у запиті): boolean
Якщо true, додаємо часову мітку RFC3339 або RFC3339Nano на початок кожного рядка виводу логу. Стандартне значення — false.
Відповідь
200 (string): OK
401: Unauthorized
get
отримати статус вказаного Podʼа
HTTP запит
GET /api/v1/namespaces/{namespace}/pods/{name}/status
Параметри
name (у шляху): string, обовʼязково
назва Podʼа
namespace (у шляху): string, обовʼязково
pretty (у запиті): string
Відповідь
200 (Pod): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу Pod
HTTP запит
GET /api/v1/namespaces/{namespace}/pods
Параметри
namespace (у шляху): string, обовʼязково
allowWatchBookmarks (у запиті): boolean
continue (у запиті): string
fieldSelector (у запиті): string
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
watch (у запиті): boolean
Відповідь
200 (PodList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу Pod
HTTP запит
GET /api/v1/pods
Параметри
allowWatchBookmarks (у запиті): boolean
continue (у запиті): string
fieldSelector (у запиті): string
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
watch (у запиті): boolean
Відповідь
200 (PodList): OK
401: Unauthorized
create
створення Podʼа
HTTP запит
POST /api/v1/namespaces/{namespace}/pods
Параметри
namespace (у шляху): string, обовʼязково
body: Pod, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
202 (Pod): Accepted
401: Unauthorized
update
заміна вказаного Podʼа
HTTP запит
PUT /api/v1/namespaces/{namespace}/pods/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Pod, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
update
заміна ephemeralcontainers вказаного Podʼа
HTTP запит
PUT /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Pod, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
update
заміна статусу вказаного Podʼа
HTTP запит
PUT /api/v1/namespaces/{namespace}/pods/{name}/status
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Pod, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
часткове оновлення вказаного Podʼа
HTTP запит
PATCH /api/v1/namespaces/{namespace}/pods/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
force (у запиті): boolean
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
часткове оновлення ephemeralcontainers вказаного Podʼа
HTTP запит
PATCH /api/v1/namespaces/{namespace}/pods/{name}/ephemeralcontainers
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
force (у запиті): boolean
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного Podʼа
HTTP запит
PATCH /api/v1/namespaces/{namespace}/pods/{name}/status
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
force (у запиті): boolean
pretty (у запиті): string
Відповідь
200 (Pod): OK
201 (Pod): Created
401: Unauthorized
delete
видалення Pod
HTTP запит
DELETE /api/v1/namespaces/{namespace}/pods/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Podʼа
namespace (у шляху): string, обовʼязково
body: DeleteOptions
dryRun (у запиті): string
gracePeriodSeconds (у запиті): integer
pretty (у запиті): string
propagationPolicy (у запиті): string
Відповідь
200 (Pod): OK
202 (Pod): Accepted
401: Unauthorized
deletecollection
видалення колекції Podʼів
HTTP запит
DELETE /api/v1/namespaces/{namespace}/pods
Параметри
namespace (у шляху): string, обовʼязково
body: DeleteOptions
continue (у запиті): string
dryRun (у запиті): string
fieldSelector (у запиті): string
gracePeriodSeconds (у запиті): integer
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
propagationPolicy (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
2 - Binding
apiVersion: v1
import "k8s.io/api/core/v1"
Binding
Binding звʼязує один обʼєкт з іншим; наприклад, Pod звʼязується з вузлом за допомогою планувальника. Застаріло у версії 1.7, будь ласка, використовуйте субресурс bindings для Podʼів замість цього.
apiVersion: v1
kind: Binding
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
target (ObjectReference), обовʼязково
Цільовий обʼєкт, з яким ви хочете звʼязати стандартний обʼєкт.
Операції
create
створення Binding
HTTP запит
POST /api/v1/namespaces/{namespace}/bindings
Параметри
namespace (в шляху): string, обовʼязково
body: Binding, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Binding): OK
201 (Binding): Created
202 (Binding): Accepted
401: Unauthorized
create
створення звʼязування для Pod
HTTP запит
POST /api/v1/namespaces/{namespace}/pods/{name}/binding
Параметри
name (в шляху): string, обовʼязково
імʼя Binding
namespace (в шляху): string, обовʼязково
body: Binding, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Binding): OK
201 (Binding): Created
202 (Binding): Accepted
401: Unauthorized
3 - PodTemplate
apiVersion: v1
import "k8s.io/api/core/v1"
PodTemplate
PodTemplate описує шаблон для створення копій наперед визначеного Podʼа.
apiVersion: v1
kind: PodTemplate
metadata (ObjectMeta)
Метадані стандартного обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
template (PodTemplateSpec)
Template — визначає Podʼи, які будуть створені з цього шаблону. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PodTemplateList
PodTemplateList — список PodTemplate.
apiVersion: v1
kind: PodTemplateList
metadata (ListMeta)
Метадані стандартного списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]PodTemplate), обовʼязково
Список шаблонів Pod.
Операції
get
прочитати вказаний PodTemplate
HTTP-запит
GET /api/v1/namespaces/{namespace}/podtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodTemplate
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodTemplate): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodTemplate
HTTP-запит
GET /api/v1/namespaces/{namespace}/podtemplates
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodTemplateList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodTemplate
HTTP-запит
GET /api/v1/podtemplates
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodTemplateList): OK
401: Unauthorized
create
створення PodTemplate
HTTP-запит
POST /api/v1/namespaces/{namespace}/podtemplates
Параметри
namespace (в шляху): string, обовʼязково
body: PodTemplate, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodTemplate): OK
201 (PodTemplate): Created
202 (PodTemplate): Accepted
401: Unauthorized
update
замінити вказаний PodTemplate
HTTP-запит
PUT /api/v1/namespaces/{namespace}/podtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodTemplate
namespace (в шляху): string, обовʼязково
body: PodTemplate, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodTemplate): OK
201 (PodTemplate): Created
401: Unauthorized
patch
частково оновити вказаний PodTemplate
HTTP-запит
PATCH /api/v1/namespaces/{namespace}/podtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodTemplate
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodTemplate): OK
201 (PodTemplate): Created
401: Unauthorized
delete
видалити PodTemplate
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/podtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodTemplate
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (PodTemplate): OK
202 (PodTemplate): Accepted
401: Unauthorized
deletecollection
видалити колекцію PodTemplate
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/podtemplates
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
4 - ReplicationController
apiVersion: v1
import "k8s.io/api/core/v1"
ReplicationController
ReplicationController представляє конфігурацію контролера реплікації.
apiVersion: v1
kind: ReplicationController
metadata (ObjectMeta)
Якщо мітки (Labels) ReplicationController пусті, вони стандартно встановлюються такими ж, як у Pod(ів), які контролює replication controller. Стандартні метадані обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ReplicationControllerSpec)
Spec визначає специфікацію бажаної поведінки replication controller. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (ReplicationControllerStatus)
Status — це останній спостережуваний статус replication controller. Ці дані можуть бути застарілими на деякий час. Заповнюється системою. Тільки для читання. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ReplicationControllerSpec
ReplicationControllerSpec — це специфікація контролера реплікації.
selector (map[string]string)
Selector — це запит міток (label query) з Podʼів, які повинні відповідати кількості реплік. Якщо Selector порожній, стандартно встановлюються мітки, які присутні в шаблоні Pod. Ключі та значення міток, які повинні збігатись для контролю цим контролером реплікації, за відсутності стандартних значень встановлюються мітки з шаблону Pod. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec)
Template — це обʼєкт, який описує Pod, який буде створений у разі виявлення недостатньої кількості реплік. Це має перевагу над TemplateRef. Єдине дозволене значення template.spec.restartPolicy — "Always". Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
replicas (int32)
Replicas — це кількість бажаних реплік. Це вказівка для розрізнення між явним нульовим значенням та невказаною кількістю. Стандартне значення — 1. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
ReplicationControllerStatus
ReplicationControllerStatus представляє поточний статус контролера реплікації.
replicas (int32), обовʼязково
Replicas — це найновіша зафіксована кількість реплік. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#what-is-a-replicationcontroller
availableReplicas (int32)
Кількість доступних реплік (готових принаймні протягом minReadySeconds) для цього контролера реплікації.
readyReplicas (int32)
Кількість готових реплік для цього контролера реплікації.
fullyLabeledReplicas (int32)
Кількість Podʼів, які мають мітки, що відповідають міткам шаблону Pod контролера реплікації.
conditions ([]ReplicationControllerCondition)
Patch strategy: обʼєднання за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану контролера реплікації.
ReplicationControllerCondition описує стан контролера реплікації в певний момент.
conditions.status (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану контролера реплікації.
conditions.lastTransitionTime (Time)
Останній час переходу стану з одного статусу в інший.
Time є обгорткою навколо time.Time, яка підтримує правильне перетворення в YAML та JSON. Надаються обгортки для багатьох методів створення, які пропонує пакет time.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
observedGeneration (int64)
ObservedGeneration показує покоління останнього спостереження контролера реплікації.
ReplicationControllerList
ReplicationControllerList — це колекція контролерів реплікації.
apiVersion: v1
kind: ReplicationControllerList
metadata (ListMeta)
Стандартні метадані списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ReplicationController), обовʼязково
Список контролерів реплікації. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
Операції
get
читання вказаного ReplicationController
HTTP-запит
GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
401: Unauthorized
get
читання статусу вказаного ReplicationController
HTTP-запит
GET /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
401: Unauthorized
list
перелік або спостереження за обʼєктами типу ReplicationController
HTTP-запит
GET /api/v1/namespaces/{namespace}/replicationcontrollers
Параметри
namespace (в шляху): string, обов\язково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ReplicationControllerList): ОК
401: Unauthorized
list
перелік або спостереження за обʼєктами типу ReplicationController
HTTP-запит
GET /api/v1/replicationcontrollers
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ReplicationControllerList): ОК
401: Unauthorized
create
створення ReplicationController
HTTP-запит
POST /api/v1/namespaces/{namespace}/replicationcontrollers
Параметри
namespace (в шляху): string, обовʼязково
body: ReplicationController, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
201 (ReplicationController): Created
202 (ReplicationController): Accepted
401: Unauthorized
update
заміна вказаного ReplicationController
HTTP-запит
PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
body: ReplicationController, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
201 (ReplicationController): Created
401: Unauthorized
update
заміна статусу вказаного ReplicationController
HTTP-запит
PUT /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
body: ReplicationController, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
201 (ReplicationController): Created
401: Unauthorized
patch
часткове оновлення вказаного ReplicationController
HTTP-запит
PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
201 (ReplicationController): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного ReplicationController
HTTP-запит
PATCH /api/v1/namespaces/{namespace}/replicationcontrollers/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ReplicationController): ОК
201 (ReplicationController): Created
401: Unauthorized
delete
видалення ReplicationController
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/replicationcontrollers/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicationController
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): ОК
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ReplicationController
HTTP-запит
DELETE /api/v1/namespaces/{namespace}/replicationcontrollers
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): ОК
401: Unauthorized
5 - ReplicaSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ReplicaSet
ReplicaSet забезпечує, що в будь-який момент часу задана кількість реплік Podʼів працює.
apiVersion: apps/v1
kind: ReplicaSet
metadata (ObjectMeta)
Якщо мітки ReplicaSet порожні, вони стандартно встановлюються такими самими, як у Pod(ах), яким керує ReplicaSet. Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (ReplicaSetSpec)
Spec визначає специфікацію бажаної поведінки ReplicaSet. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (ReplicaSetStatus)
Статус — це останній зареєстрований статус ReplicaSet. Ці дані можуть бути застарілими на деякий час. Заповнюється системою. Тільки для читання. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
ReplicaSetSpec
ReplicaSetSpec — це специфікація ReplicaSet.
selector (LabelSelector), обовʼязково
Селектор — це запит міток до Podʼів, які повинні відповідати кількості реплік. Ключі міток та їх значення, які повинні відповідати, щоб ними керував цей ReplicaSet. Вони повинні відповідати міткам шаблону Podʼа. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec)
Шаблон — це обʼєкт, що описує Pod, який буде створений, якщо виявлено недостатню кількість реплік. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
replicas (int32)
Replicas — це бажана кількість реплік. Це вказівник для розрізнювання між явною нульовою та невизначеною кількістю. Стандартне значення — 1. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
ReplicaSetStatus
ReplicaSetStatus відображає поточний стан ReplicaSet.
replicas (int32), обовʼязково
Replicas — це остання зафіксована кількість реплік. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
availableReplicas (int32)
Кількість доступних реплік (готових протягом принаймні minReadySeconds) для цього набору реплік.
readyReplicas (int32)
readyReplicas — це кількість Podʼів в стані Ready, на які спрямовується цей ReplicaSet.
fullyLabeledReplicas (int32)
Кількість Podʼів, які мають мітки, що відповідають міткам шаблону Podʼа набору реплік.
conditions ([]ReplicaSetCondition)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану набору реплік.
ReplicaSetCondition описує стан набору реплік в певний момент часу.
conditions.status (string), обовʼязково
Статус стану, одне з: True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану набору реплік.
conditions.lastTransitionTime (Time)
Останній раз, коли стан переходив з одного статусу в інший.
Time - це обгортка навколо time.Time, яка підтримує правильне перетворення у YAML і JSON. Надаються обгортки для багатьох методів, які пропонує пакет time.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
observedGeneration (int64)
ObservedGeneration показує покоління останнього зафіксованого ReplicaSet.
ReplicaSetList
ReplicaSetList — це колекція ReplicaSets.
apiVersion: apps/v1
kind: ReplicaSetList
metadata (ListMeta)
Стандартні метадані списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
items ([]ReplicaSet), обовʼязково
Список ReplicaSets. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller
Операції
get
зчитування вказаного ReplicaSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
401: Unauthorized
get
зчитування статусу вказаного ReplicaSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
401: Unauthorized
list
список або перегляд обʼєктів типу ReplicaSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/replicasets
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ReplicaSetList): OK
401: Unauthorized
list
список або перегляд обʼєктів типу ReplicaSet
HTTP-запит
GET /apis/apps/v1/replicasets
Параметри
allowWatchBookmarks
(в запиті): booleancontinue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ReplicaSetList): OK
401: Unauthorized
create
створення ReplicaSet
HTTP-запит
POST /apis/apps/v1/namespaces/{namespace}/replicasets
Параметри
namespace (в шляху): string, обовʼязково
body: ReplicaSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
201 (ReplicaSet): Created
202 (ReplicaSet): Accepted
401: Unauthorized
update
заміна вказаного ReplicaSet
HTTP-запит
PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
body: ReplicaSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
update
заміна статусу вказаного ReplicaSet
HTTP-запит
PUT /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
body: ReplicaSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
patch
часткове оновлення вказаного ReplicaSet
HTTP-запит
PATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного ReplicaSet
HTTP-запит
PATCH /apis/apps/v1/namespaces/{namespace}/replicasets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ReplicaSet): OK
201 (ReplicaSet): Created
401: Unauthorized
delete
видалення ReplicaSet
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/replicasets/{name}
Параметри
name (в шляху): string, обовʼязково
назва ReplicaSet
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ReplicaSet
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/replicasets
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
6 - Deployment
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
Deployment
Deployment робить можливими декларативні оновлення для Podʼів та ReplicaSet.
apiVersion: apps/v1
kind: Deployment
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (DeploymentSpec)
Специфікація бажаної поведінки Deployment.
status (DeploymentStatus)
Найбільш останній спостережуваний статус Deployment.
DeploymentSpec
DeploymentSpec є специфікацією бажаної поведінки Deployment.
selector (LabelSelector), обовʼязково
Селектор міток для Podʼів. Наявні ReplicaSets, чиї Podʼи вибрані за допомогою цього селектора, будуть ті, які будуть змінені цим Deployment. Він повинен відповідати міткам шаблону Podʼа.
template (PodTemplateSpec), обовʼязково
Шаблон описує Podʼи, які будуть створені. Єдине допустиме значення для template.spec.restartPolicy — "Always".
replicas (int32)
Кількість бажаних Podʼів. Це вказівник для розрізнення між явним нулем і не вказаним значенням. Стандартне значення — 1.
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
strategy (DeploymentStrategy)
Patch strategy: retainKeys
Стратегія розгортання, яку слід використовувати для заміни наявних Podʼів на нові.
DeploymentStrategy описує, як замінити наявні Podʼи новими.
strategy.type (string)
Тип розгортання. Може бути "Recreate" або "RollingUpdate". Стандартне значення — RollingUpdate.
strategy.rollingUpdate (RollingUpdateDeployment)
Параметри конфігурації постійного оновлення. Присутні лише, якщо DeploymentStrategyType = RollingUpdate.
Spec для управління бажаною поведінкою постійного оновлення.
strategy.rollingUpdate.maxSurge (IntOrString)
Максимальна кількість Podʼів, які можуть бути заплановані понад бажану кількість Podʼів. Значення може бути абсолютним числом (наприклад, 5) або відсотком від кількості бажаних Podʼів (наприклад, 10%). Це не може бути 0, якщо MaxUnavailable дорівнює 0. Абсолютне число обчислюється з відсотком, округленим вверх. Стандартне значення — 25%. Наприклад: якщо встановлено 30%, новий ReplicaSet може бути масштабований вгору відразу після початку постійного оновлення, так що загальна кількість старих і нових Podʼів не перевищує 130% від бажаних Podʼів. Після примусового завершення роботи старих Podʼів, новий ReplicaSet можна додатково масштабувати, гарантуючи, що загальна кількість Podʼів, запущених в будь-який момент під час оновлення, становить не більше 130% від бажаної кількості Podʼів
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
strategy.rollingUpdate.maxUnavailable (IntOrString)
Максимальна кількість Podʼів, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаних Podʼів (наприклад, 10%). Абсолютне число обчислюється з відсотком шляхом округлення у меншу сторону. Це не може бути 0, якщо MaxSurge дорівнює 0. Стандартне значення — 25%. Наприклад: коли це встановлено на 30%, старий ReplicaSet може бути масштабований вниз до 70% від бажаних Podʼів відразу після початку постійного оновлення. Як тільки нові Podʼи готові, старий ReplicaSet може бути додатково масштабований вниз, разом з масштабованням вгору нового ReplicaSet, забезпечуючи, що загальна кількість Podʼів, доступних у будь-який час під час оновлення, становить принаймні 70% від кількості бажаних Podʼів.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
revisionHistoryLimit (int32)
Кількість старих ReplicaSets, які слід зберігати для можливості відкату. Це вказівник для розрізнення між явним нулем і не вказаним значенням. Стандартне значення — 10.
progressDeadlineSeconds (int32)
Максимальний час у секундах для Deployment для досягнення прогресу, перш ніж вважати його невдалим. Контролер розгортання буде продовжувати обробляти невдалі Deployment, і у статусі Deployment буде сповіщено причину ProgressDeadlineExceeded. Зверніть увагу, що прогрес не буде оцінюватися під час паузи Deployment. Стандартне значення — 600 с.
paused (boolean)
Показує, що Deployment призупинено.
DeploymentStatus
DeploymentStatus — це найостанніший спостережуваний статус Deployment.
replicas (int32)
Загальна кількість Podʼів, що не завершили роботу, які є ціллю цього Deployment (їх мітки відповідають селектору).
availableReplicas (int32)
Загальна кількість доступних Podʼів (готових принаймні minReadySeconds), які є ціллю цього Deployment.
readyReplicas (int32)
Кількість Podʼів, які є ціллю цього Deployment в стані Ready.
unavailableReplicas (int32)
Загальна кількість недоступних Podʼів, які є ціллю цього Deployment. Це загальна кількість Podʼів, які все ще необхідні для того, щоб Deployment мав 100% доступну потужність. Вони можуть бути Podʼами, які працюють, але ще не доступні, або Podʼами, які ще не були створені.
updatedReplicas (int32)
Загальна кількість незавершених Podʼів, які є ціллю цього Deployment та мають бажаний шаблон специфікацій.
collisionCount (int32)
Кількість колізій хешів для Deployment. Контролер Deployment використовує це поле як механізм уникнення колізій, коли йому потрібно створити імʼя для нового ReplicaSet.
conditions ([]DeploymentCondition)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження про поточний стан Deployment.
DeploymentCondition описує стан Deployment в певний момент.
conditions.status (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану Deployment.
conditions.lastTransitionTime (Time)
Останній час, коли стан переходив з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastUpdateTime (Time)
Останній раз, коли цей стан було оновлено.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього зміни стану.
observedGeneration (int64)
Генерація, що спостерігається контролером Deployment.
DeploymentList
DeploymentList - це список обʼєктів Deployment.
apiVersion: apps/v1
kind: DeploymentList
metadata (ListMeta)
Стандартні метадані списку.
items ([]Deployment), обовʼязково
Items — це список обʼєктів Deployment.
Операції
get
отримати вказаний Deployment
HTTP Запит
GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}
Параметри
name (в шляху): string, обовʼязково
назва Deployment
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Deployment): ОК
401: Unauthorized
get
отримати статус вказаного Deployment
HTTP Запит
GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва Deployment
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Deployment): ОК
401: Unauthorized
list
перелік або перегляд обʼєктів типу Deployment
HTTP Запит
GET /apis/apps/v1/namespaces/{namespace}/deployments
Параметри
namespace (у шляху): string, обовʼязково
allowWatchBookmarks (у запиті): boolean
continue (у запиті): string
fieldSelector (у запиті): string
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
watch (у запиті): boolean
Відповідь
200 (DeploymentList): ОК
401: Unauthorized
list
перелік або перегляд обʼєктів типу Deployment
HTTP Запит
GET /apis/apps/v1/deployments
Параметри
allowWatchBookmarks (у запиті): boolean
continue (у запиті): string
fieldSelector (у запиті): string
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
watch (у запиті): boolean
Відповідь
200 (DeploymentList): ОК
401: Unauthorized
create
створення Deployment
HTTP Запит
POST /apis/apps/v1/namespaces/{namespace}/deployments
Параметри
namespace (у шляху): string, обовʼязково
body: Deployment, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Deployment): ОК
201 (Deployment): Created
202 (Deployment): Accepted
401: Unauthorized
update
заміна вказаного Deployment
HTTP Запит
PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Deployment
namespace (у шляху): string, обовʼязково
body: Deployment, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Deployment): ОК
201 (Deployment): Created
401: Unauthorized
update
заміна статусу вказаного Deployment
HTTP Запит
PUT /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
Параметри
name (у шляху): string, обовʼязково
імʼя Deployment
namespace (у шляху): string, обовʼязково
body: Deployment, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
pretty (у запиті): string
Відповідь
200 (Deployment): ОК
201 (Deployment): Created
401: Unauthorized
patch
часткове оновлення вказаного Deployment
HTTP Запит
PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Deployment
namespace (у шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
force (у запиті): boolean
pretty (у запиті): string
Відповідь
200 (Deployment): ОК
201 (Deployment): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного Deployment
HTTP Запит
PATCH /apis/apps/v1/namespaces/{namespace}/deployments/{name}/status
Параметри
name (у шляху): string, обовʼязково
імʼя Deployment
namespace (у шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (у запиті): string
fieldManager (у запиті): string
fieldValidation (у запиті): string
force (у запиті): boolean
pretty (у запиті): string
Відповідь
200 (Deployment): ОК
201 (Deployment): Created
401: Unauthorized
delete
видалення Deployment
HTTP Запит
DELETE /apis/apps/v1/namespaces/{namespace}/deployments/{name}
Параметри
name (у шляху): string, обовʼязково
імʼя Deployment
namespace (у шляху): string, обовʼязково
body: DeleteOptions
dryRun (у запиті): string
gracePeriodSeconds (у запиті): integer
pretty (у запиті): string
propagationPolicy (у запиті): string
Відповідь
200 (Status): ОК
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції Deployment
HTTP Запит
DELETE /apis/apps/v1/namespaces/{namespace}/deployments
Параметри
namespace (у шляху): string, обовʼязково
body: DeleteOptions
continue (у запиті): string
dryRun (у запиті): string
fieldSelector (у запиті): string
gracePeriodSeconds (у запиті): integer
labelSelector (у запиті): string
limit (у запиті): integer
pretty (у запиті): string
propagationPolicy (у запиті): string
resourceVersion (у запиті): string
resourceVersionMatch (у запиті): string
sendInitialEvents (у запиті): boolean
timeoutSeconds (у запиті): integer
Відповідь
200 (Status): ОК
401: Unauthorized
7 - StatefulSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
StatefulSet
StatefulSet представляє набір Podʼів з постійною ідентичністю. Ідентичність визначається як:
- Мережа: єдине стабільне DNS та імʼя хосту.
- Сховище: Стільки VolumeClaims, скільки потрібно.
StatefulSet гарантує, що вказана мережева ідентичність завжди буде зіставлятись з вказаним сховищем.
apiVersion: apps/v1
kind: StatefulSet
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (StatefulSetSpec)
Spec визначає бажані ідентичності Podʼів у цьому наборі.
status (StatefulSetStatus)
Status — це поточний стан Podʼів у цьому StatefulSet. Ці дані можуть бути застарілими на певний проміжок часу.
StatefulSetSpec
StatefulSetSpec — це специфікація StatefulSet.
serviceName (string), обовʼязково
serviceName — це назва Service, який керує цим StatefulSet. Цей сервіс повинен існувати до створення StatefulSet і відповідає за мережеву ідентичність набору. Podʼи отримують DNS/hostnames, які відповідають шаблону: pod-specific-string.serviceName.default.svc.cluster.local, де "pod-specific-string" управляється контролером StatefulSet.
selector (LabelSelector), обовʼязково
selector — це запит міток для Podʼів, які повинні відповідати кількості реплік. Він повинен відповідати міткам шаблону Podʼа. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), обовʼязково
template — це обʼєкт, який описує Pod, що буде створений у випадку недостатньої кількості реплік. Кожен Pod, створений StatefulSet, буде відповідати цьому шаблону, але матиме унікальну ідентичність у порівнянні з іншими Podʼами StatefulSet. Кожен Pod буде названий за форматом <statefulsetname>-<podindex>. Наприклад, Pod у StatefulSet з імʼям "web" з індексом номер "3" буде називатися "web-3". Єдине дозволене значення для template.spec.restartPolicy — "Always".
replicas (int32)
replicas — це бажана кількість реплік даного шаблону. Це репліки в тому сенсі, що вони є екземплярами одного і того ж шаблону, але кожна репліка також має постійну ідентичність. Якщо не вказано, стандартне значення — 1.
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy вказує на StatefulSetUpdateStrategy, яка буде використовуватися для оновлення Podʼів у StatefulSet при внесенні змін до шаблону.
StatefulSetUpdateStrategy вказує стратегію, яку контролер StatefulSet буде використовувати для виконання оновлень. Вона включає будь-які додаткові параметри, необхідні для виконання оновлення для зазначеної стратегії.
updateStrategy.type (string)
Type вказує тип StatefulSetUpdateStrategy. Стандартне значення — RollingUpdate.
updateStrategy.rollingUpdate (RollingUpdateStatefulSetStrategy)
RollingUpdate використовується для передачі параметрів, коли Type є RollingUpdateStatefulSetStrategyType.
RollingUpdateStatefulSetStrategy використовується для передачі параметрів для RollingUpdateStatefulSetStrategyType.
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
Максимальна кількість Podʼів, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаної кількості Podʼів (наприклад, 10%). Абсолютна кількість розраховується від відсотків шляхом округлення в більшу сторону. Це не може бути 0. Стандартне значення — 1. Це поле є альфа-рівнем і враховується лише серверами, які підтримують функцію MaxUnavailableStatefulSet. Поле застосовується до всіх Podʼів у діапазоні від 0 до Replicas-1. Це означає, що якщо будь-який Pod у діапазоні від 0 до Replicas-1 недоступний, він буде враховуватися як MaxUnavailable.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
updateStrategy.rollingUpdate.partition (int32)
Partition вказує порядковий номер, на якому StatefulSet повинен бути розділений для оновлень. Під час rolling update всі Podʼи від порядкового номера Replicas-1 до Partition оновлюються. Всі Podʼи від порядкового номера Partition-1 до 0 залишаються незмінними. Це корисно для проведення канаркового розгортання. Стандартне значення — 0.
podManagementPolicy (string)
podManagementPolicy контролює, як Podʼи створюються під час початкового масштабування, при заміні Podʼів на вузлах або при масштабуванні вниз. Стандартне значення —
OrderedReady
, коли Podʼи створюються в порядку зростання (pod-0, потім pod-1 і т.д.), і контролер чекатиме, поки кожен Pod буде готовий, перш ніж продовжити. При масштабуванні вниз Podʼи видаляються у зворотному порядку. Альтернативною політикою єParallel
, яка створює Podʼи паралельно для досягнення бажаного масштабу без очікування, а при масштабуванні вниз видаляє всі Podʼи одночасно.revisionHistoryLimit (int32)
revisionHistoryLimit — це максимальна кількість ревізій, які будуть зберігатися в історії ревізій StatefulSet. Історія ревізій складається з усіх ревізій, які не представлені поточною застосованою версією StatefulSetSpec. Стандартне значення — 10.
volumeClaimTemplates ([]PersistentVolumeClaim)
Atomic: буде замінено під час злиття
volumeClaimTemplates — це список запитів, до яких Podʼи можуть звертатися. Контролер StatefulSet відповідає за призначення мережевих ідентичностей запитам таким чином, щоб зберігати ідентичність Podʼа. Кожен запит у цьому списку повинен мати принаймні один відповідний (за імʼям) volumeMount в одному з контейнерів в шаблоні. Запит у цьому списку має пріоритет над будь-якими volumes у шаблоні з таким самим імʼям.
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
persistentVolumeClaimRetentionPolicy (StatefulSetPersistentVolumeClaimRetentionPolicy)
persistentVolumeClaimRetentionPolicy описує життєвий цикл запитів на постійні томи, створених з volumeClaimTemplates. Стандартно усі запити на постійні томи створюються за необхідності та зберігаються до ручного видалення. Ця політика дозволяє змінювати життєвий цикл, наприклад, видаляючи запити на постійні томи під час видалення їх StatefulSet або при масштабуванні вниз Podʼів. Для цього потрібно включити функцію StatefulSetAutoDeletePVC, яка є бета-рівнем.
StatefulSetPersistentVolumeClaimRetentionPolicy описує політику, яка використовується для PVC, створених з VolumeClaimTemplates StatefulSet.
persistentVolumeClaimRetentionPolicy.whenDeleted (string)
WhenDeleted визначає, що відбувається з PVC, створеними з VolumeClaimTemplates StatefulSet, коли StatefulSet видаляється. Стандартна політика
Retain
призводить до того, що на PVC не впливає видалення StatefulSet. ПолітикаDelete
призводить до видалення таких PVC.persistentVolumeClaimRetentionPolicy.whenScaled (string)
WhenScaled визначає, що відбувається з PVC, створеними з VolumeClaimTemplates StatefulSet, коли StatefulSet масштабується вниз. Стандартна політика
Retain
призводить до того, що на PVC не впливає масштабування вниз. ПолітикаDelete
призводить до видалення відповідних PVC для будь-яких зайвих Podʼів, що перевищують кількість реплік.
ordinals (StatefulSetOrdinals)
ordinals контролює нумерацію індексів реплік у StatefulSet. Стандартна поведінка ordinals призначає індекс "0" першій репліці та збільшує індекс на одиницю для кожної додаткової запитаної репліки.
StatefulSetOrdinals описує політику, яка використовується для призначення порядкових номерів реплік у цьому StatefulSet.
ordinals.start (int32)
start — це число, що представляє індекс першої репліки. Його можна використовувати для нумерації реплік з альтернативного індексу (наприклад, з 1) замість стандартної індексації з 0, або для організації поступового переміщення реплік з одного StatefulSet до іншого. Якщо встановлено, індекси реплік будуть у діапазоні:
- [.spec.ordinals.start, .spec.ordinals.start + .spec.replicas].
Якщо не встановлено, стандартне значення — 0. Індекси реплік будуть у діапазоні:
- [0, .spec.replicas].
StatefulSetStatus
StatefulSetStatus представляє поточний стан StatefulSet.
replicas (int32), обовʼязково
replicas — це кількість Podʼів, створених контролером StatefulSet.
readyReplicas (int32)
readyReplicas — це кількість Podʼів, створених для цього StatefulSet, які мають стан Ready.
currentReplicas (int32)
currentReplicas — це кількість Podʼів, створених контролером StatefulSet з версії StatefulSet, зазначеної в currentRevision.
updatedReplicas (int32)
updatedReplicas — це кількість Podʼів, створених контролером StatefulSet з версії StatefulSet, зазначеної в updateRevision.
availableReplicas (int32)
Загальна кількість доступних Podʼів (готових принаймні minReadySeconds), на які спрямований цей statefulset.
collisionCount (int32)
collisionCount — це кількість хеш-колізій для StatefulSet. Контролер StatefulSet використовує це поле як механізм уникнення колізій при створенні імені для найновішого ControllerRevision.
conditions ([]StatefulSetCondition)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану StatefulSet.
StatefulSetCondition описує стан StatefulSet у певний момент часу.
conditions.status (string), обовʼязково
Статус стану, один з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану StatefulSet.
conditions.lastTransitionTime (Time)
Останній час, коли стан переходив з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
currentRevision (string)
currentRevision, якщо не порожній, вказує версію StatefulSet, яка використовується для створення Podʼів у послідовності [0,currentReplicas].
updateRevision (string)
updateRevision, якщо не порожній, вказує версію StatefulSet, яка використовується для створення Podʼів у послідовності [replicas-updatedReplicas,replicas]
observedGeneration (int64)
observedGeneration — останнє покоління, яке спостерігалося для цього StatefulSet. Воно відповідає поколінню StatefulSet, яке оновлюється при зміні сервером API.
StatefulSetList
StatefulSetList — це колекція StatefulSet.
apiVersion: apps/v1
kind: StatefulSetList
metadata (ListMeta)
Стандартні метадані списку. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]StatefulSet), обовʼязково
Items — це список StatefulSet.
Операції
get
отримати вказаний StatefulSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
401: Unauthorized
get
отримати статус вказаного StatefulSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу StatefulSet
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/statefulsets
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (StatefulSetList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу StatefulSet
HTTP-запит
GET /apis/apps/v1/statefulsets
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (StatefulSetList): OK
401: Unauthorized
create
створення StatefulSet
HTTP-запит
POST /apis/apps/v1/namespaces/{namespace}/statefulsets
Параметри
namespace (в шляху): string, обовʼязково
body: StatefulSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
201 (StatefulSet): Created
202 (StatefulSet): Accepted
401: Unauthorized
update
заміна вказаного StatefulSet
HTTP-запит
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
body: StatefulSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
update
заміна статусу вказаного StatefulSet
HTTP-запит
PUT /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
body: StatefulSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
patch
часткове оновлення вказаного StatefulSet
HTTP-запит
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
body: patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
patch
часткове оновлення статусу вказакного StatefulSet
HTTP-запит
PATCH /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}/status
Параметри
name (в запиті): string, обовʼязково
назва StatefulSet
namespace (в запиті): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (StatefulSet): OK
201 (StatefulSet): Created
401: Unauthorized
delete
видалення StatefulSet
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва StatefulSet
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції StatefulSet
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/statefulsets
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
limit в запиті): integer
pretty в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
8 - ControllerRevision
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ControllerRevision
ControllerRevision впроваджує незмінюваний знімок даних стану. Клієнти відповідають за серіалізацію та десеріалізацію обʼєктів, які містять їх внутрішній стан. Після успішного створення ControllerRevision, його не можна оновити. API Server не пройде валідацію всіх запитів, які намагаються змінити поле Data. Однак ControllerRevision може бути видалено. Зверніть увагу, що через використання цього обʼєкта обома контролерами DaemonSet і StatefulSet для оновлення та відкату, він знаходиться на стадії бета-тестування. З усім тим, його назва та представлення можуть змінюватися в майбутніх версіях, і клієнти не повинні покладатися на його стабільність. Він призначений головним чином для внутрішнього використання контролерами.
apiVersion: apps/v1
kind: ControllerRevision
metadata (ObjectMeta)
Стаціонарні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
revision (int64), обовʼязково
поле revision показує номер ревізії стану представленого в Data.
data (RawExtension)
Data є серіалізованим представленням стану.
RawExtension використовується для утримання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має RawExtension як тип у вашій зовнішній, версійній структурі, і Object у вашій внутрішній структурі. Вам також потрібно зареєструвати різні типи втулків.
// Внутрішній пакет:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// Зовнішній пакет:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// У мережі JSON буде виглядати приблизно так:
{ "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }
Що ж відбувається? Спочатку декодування використовує json або yaml для перетворення серіалізованих даних у вашу зовнішню структуру MyAPIObject. Це призводить до збереження сирого JSON, але не до його розпакування. Наступним кроком є копіювання (використовуючи pkg/conversion) у внутрішню структуру. У пакеті runtime, функції перетворення, встановлені в DefaultScheme, розпакують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, якщо обʼєкт невідомого типу, буде створено обʼєкт runtime.Unknown і збережено.)
ControllerRevisionList
ControllerRevisionList — це ресурс, що містить список обʼєктів ControllerRevision.
apiVersion: apps/v1
kind: ControllerRevisionList
metadata (ListMeta)
Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]ControllerRevision), обовʼязково
Items — це список ControllerRevisions
Операції
get
отримати вказаний ControllerRevision
HTTP запит
GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязково
назва ControllerRevision
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ControllerRevision): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ControllerRevision
HTTP-запит
GET /apis/apps/v1/namespaces/{namespace}/controllerrevisions
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ControllerRevisionList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ControllerRevision
HTTP-запит
GET /apis/apps/v1/controllerrevisions
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ControllerRevisionList): OK
401: Unauthorized
create
створення ControllerRevision
HTTP-запит
POST /apis/apps/v1/namespaces/{namespace}/controllerrevisions
Параметри
namespace (в шляху): string, обовʼязково
body: ControllerRevision, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ControllerRevision): OK
201 (ControllerRevision): Created
202 (ControllerRevision): Accepted
401: Unauthorized
update
зміна вказаного ControllerRevision
HTTP-запит
PUT /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ControllerRevision
namespace (в шляху): string, обовʼязково
body: ControllerRevision, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
patch
часткове оновлення вказаного ControllerRevision
HTTP-запит
PATCH /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ControllerRevision
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ControllerRevision): OK
201 (ControllerRevision): Created
401: Unauthorized
delete
видалення ControllerRevision
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions/{name}
Параметри
name (в шляху): string, обовʼязковий
імʼя ControllerRevision
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції ControllerRevision
HTTP-запит
DELETE /apis/apps/v1/namespaces/{namespace}/controllerrevisions
Параметри
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
9 - DaemonSet
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
DaemonSet
DaemonSet представляє налаштування набору фонових служб (демонів).
apiVersion: apps/v1
kind: DaemonSet
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (DaemonSetSpec)
Бажана поведінка цього DaemonSet. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (DaemonSetStatus)
Поточний стан цього DaemonSet. Ці дані можуть бути неактуальними протягом певного часу. Заповнюється системою. Тільки для читання. Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
DaemonSetSpec
DaemonSetSpec є специфікацією DaemonSet.
selector (LabelSelector), обовʼязково
Запит міток для Podʼів, якими керує набір демонів. Має мати збіг з міткам шаблону Pod. Докладніше: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
template (PodTemplateSpec), обовʼязково
Обʼєкт, який описує Pod, який буде створено. DaemonSet створює рівно одну копію цього Pod на кожному вузлі, який відповідає селектору вузлів шаблону (або на кожному вузлі, якщо селектор вузлів не вказано). Єдине допустиме значення параметра
restartPolicy
шаблону — "Always". Докладніше: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-templateminReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий Pod DaemonSet має бути готовим без збоїв будь-якого з його контейнерів, щоб вважатися доступним. Стандартне значення — 0 (Pod вважається доступним, як тільки він буде готовим).
updateStrategy (DaemonSetUpdateStrategy)
Стратегія оновлення для заміни поточних Podʼів DaemonSet новими Podʼами.
DaemonSetUpdateStrategy є структурою, що використовується для управління стратегією оновлення для DaemonSet.
updateStrategy.type (string)
Тип оновлення набору демонів. Може бути "RollingUpdate" або "OnDelete". Стандартне значення — RollingUpdate.
updateStrategy.rollingUpdate (RollingUpdateDaemonSet)
Налаштування параметрів постійного оновлення. Присутній тільки якщо type = "RollingUpdate".
Spec для контролю небхідної поведінки постійного оновлення набору демонів.
updateStrategy.rollingUpdate.maxSurge (IntOrString)
Максимальна кількість вузлів з навним доступним Pod DaemonSet, яка може мати оновлений Pod DaemonSet під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаних Podʼів (наприклад, 10%). Це не може бути 0, якщо MaxUnavailable дорівнює 0. Абсолютне число обчислюється з відсотка, округленого в більшу сторону до мінімуму 1. Стандартне значення — 0. Наприклад: коли це встановлено на 30%, як максимум 30% від загальної кількості вузлів, повинні мати Pod демона (тобто status.desiredNumberScheduled), можуть мати свій новий Pod створений до того, як старий Pod буде видалений. Оновлення починається з запуску нових Podʼів на 30% вузлів. Як тільки оновлений Pod доступний (готовий протягом принаймні minReadySeconds), старий Pod DaemonSet на цьому вузлі позначається як видалений. Якщо старий Pod стає недоступним з будь-якої причини (готовність переходить у false, його виселяють або переносять з вузла), на цьому вузлі негайно створюється оновлений Pod без урахування обмежень по сплеску навантаження. Дозвіл на сплеск означає можливість подвоєння ресурсів, які використовуються DaemonSet на будь-якому вузлі, якщо перевірка готовності не вдається, тому ресурсомісткі DaemonSet повинні враховувати, що вони можуть спричинити виселення під час розладу.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
updateStrategy.rollingUpdate.maxUnavailable (IntOrString)
Максимальна кількість Podʼів DaemonSet, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від загальної кількості Podʼів DaemonSet на початок оновлення (наприклад, 10%). Абсолютне число обчислюється з відсотка, округленого в більшу сторону. Це не може бути 0, якщо MaxSurge дорівнює 0. Стандартне значення — 1. Наприклад: коли це встановлено на 30%, максимум 30% від загальної кількості вузлів, які повинні виконувати Pod демона (тобто status.desiredNumberScheduled), можуть мати свої Pod зупинені для оновлення в будь-який час. Оновлення починається з зупинки не більше 30% цих Podʼів DaemonSet і потім запускає нові Pod DaemonSet на їх місця. Після того, як нові Pod стануть доступними, вони продовжують роботу з іншими Podʼами DaemonSet, забезпечуючи тим самим, що принаймні 70% від початкової кількості Podʼів DaemonSet доступні.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
revisionHistoryLimit (int32)
Кількість версій історії, яку потрібно зберегти, щоб дозволити відкат. Це вказівник для розрізнення між явним нулем та не вказаним значенням. Стандартне значення — 10.
DaemonSetStatus
DaemonSetStatus представляє поточний стан DaemonSet.
numberReady (int32), обовʼязково
Кількість вузлів, на яких має бути запущений Pod демона й один або кілька з них у стані Ready.
numberAvailable (int32)
Кількість вузлів, на яких має бути запущений Pod демона й один або кілька з них запущені та доступні (готові щонайменше протягом spec.minReadySeconds).
numberUnavailable (int32)
Кількість вузлів, на яких має бути запущений Pod демона, але жоден з них не запущений і доступний (готовий щонайменше протягом spec.minReadySeconds).
numberMisscheduled (int32), обовʼязково
Кількість вузлів, на яких запущений Pod демона, але вони не повинні його виконувати. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
desiredNumberScheduled (int32), обовʼязково
Загальна кількість вузлів, на яких має бути запущений Pod демона (включаючи вузли, на яких Pod демона вже правильно запущений). Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
currentNumberScheduled (int32), обовʼязково
Кількість вузлів, на яких запущено принаймні один Pod демона і які повинні виконувати Pod демона. Додаткова інформація: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
updatedNumberScheduled (int32)
Загальна кількість вузлів, на яких запущено оновлений Pod демона.
collisionCount (int32)
Кількість колізій хешів для DaemonSet. Контролер DaemonSet використовує це поле як механізм уникнення колізій при створенні імені для найновішого ControllerRevision.
conditions ([]DaemonSetCondition)
Patch strategy: злиття за ключем
type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану DaemonSet.
DaemonSetCondition описує стан DaemonSet у певний момент часу.
conditions.status (string), обовʼязково
Статус стану, один із True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану DaemonSet.
conditions.lastTransitionTime (Time)
Час останнього зміни стану з одного статусу до іншого.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останньої зміни стану.
observedGeneration (int64)
Останнє покоління, яке спостерігається контролером набору демонів.
DaemonSetList
DaemonSetList є колекцією DaemonSet.
apiVersion: apps/v1
kind: DaemonSetList
metadata (ListMeta)
Стандартні метадані списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]DaemonSet), обовʼязково
Список DaemonSet.
Операції
get
отримати вказаний DaemonSet
HTTP запит
GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
Параметри
name (в шляху): string, обовʼязково
Назва DaemonSet.
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
401: Unauthorized
get
отримати статус вказаного DaemonSet
HTTP запит
GET /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя DaemonSet
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу DaemonSet
HTTP запит
GET /apis/apps/v1/namespaces/{namespace}/daemonsets
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (DaemonSetList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу DaemonSet
HTTP запит
GET /apis/apps/v1/daemonsets
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (DaemonSetList): OK
401: Unauthorized
create
створення DaemonSet
HTTP запит
POST /apis/apps/v1/namespaces/{namespace}/daemonsets
Параметри
namespace (в шляху): string, обовʼязково
body: DaemonSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
201 (DaemonSet): Created
202 (DaemonSet): Accepted
401: Unauthorized
update
заміна вказаного DaemonSet
HTTP запит
PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва DaemonSet
namespace (в шляху): string, обовʼязково
body: DaemonSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
201 (DaemonSet): Created
401: Unauthorized
update
заміна статусу вказаного DaemonSet
HTTP запит
PUT /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва DaemonSet
namespace (в шляху): string, обовʼязково
body: DaemonSet, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
201 (DaemonSet): Created
401: Unauthorized
patch
часткове оновлення вказаного DaemonSet
HTTP запит
PATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва DaemonSet
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
201 (DaemonSet): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного DaemonSet
HTTP запит
PATCH /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва DaemonSet
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (DaemonSet): OK
201 (DaemonSet): Created
401: Unauthorized
delete
видалення DaemonSet
HTTP запит
DELETE /apis/apps/v1/namespaces/{namespace}/daemonsets/{name}
Параметри
name (в шляху): string, обовʼязково
назва DaemonSet
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції DaemonSet
HTTP запит
DELETE /apis/apps/v1/namespaces/{namespace}/daemonsets
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
10 - Job
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
Job
Job представляє конфігурацію окремого завдання.
apiVersion: batch/v1
kind: Job
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 (string)
completionMode визначає, як відстежуються завершення Podʼів. Може бути
NonIndexed
(стандартно) абоIndexed
.NonIndexed
означає, що завдання вважається завершеним, коли успішно завершено кількість Podʼів вказана у .spec.completions. Кожне завершення 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 обмежує термін життя завдання, яке завершило виконання (або Complete, або Failed). Якщо це поле встановлено, то через ttlSecondsAfterFinished після завершення завдання воно може бути автоматично видалене. Коли завдання видаляється, його життєвий цикл (наприклад, завершувачі) буде враховуватись. Якщо це поле не встановлено, завдання не буде автоматично видалено. Якщо це поле встановлено на нуль, завдання може бути видалене відразу після завершення.
suspend (boolean)
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 (boolean)
manualSelector керує генерацією міток Podʼів і селекторів Podʼів. Залиште
manualSelector
невстановленим, якщо ви не впевнені, що робите. Коли значення false або невстановлене, система вибирає унікальні мітки для цього завдання та додає ці мітки до шаблону Podʼа. Коли значення true, користувач відповідає за вибір унікальних міток і вказування селектора. Невдача у виборі унікальної мітки може спричинити некоректну роботу цього та інших завдань. Однак ви можете побачитиmanualSelector=true
у завданнях, створених за допомогою старого APIextensions/v1beta1
. Детальніше: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
Бета-рівень
podFailurePolicy (PodFailurePolicy)
Визначає політику обробки невдалих Podʼів. Зокрема, дозволяє вказати набір дій та умов, які повинні бути виконані для виконання повʼязаної дії. Якщо це поле порожнє, застосовується стандартна поведінка — лічильник невдалих Podʼів, представлений полем .status.failed завдання, збільшується і перевіряється з backoffLimit. Це поле не можна використовувати в комбінації з restartPolicy=OnFailure.
PodFailurePolicy описує, як невдалі Podʼи впливають на backoffLimit.
podFailurePolicy.rules ([]PodFailurePolicyRule), обовʼязково
Atomic: буде замінено під час обʼєднання
Список правил політики невдач 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.onExitCodes (PodFailurePolicyOnExitCodesRequirement)
Представляє вимогу до кодів завершення контейнера.
PodFailurePolicyOnExitCodesRequirement описує вимогу для обробки невдалого Podʼа на основі кодів завершення його контейнера. Зокрема, перевіряється .state.terminated.exitCode для кожного контейнера застосунку та init-контейнера, представленого полями .status.containerStatuses і .status.initContainerStatuses у статусі Podʼа відповідно. Контейнери, завершені успішно (код завершення 0), виключаються з перевірки вимоги.
podFailurePolicy.rules.onExitCodes.operator (string), обовʼязково
Представляє стосунок між кодом(ами) завершення контейнера та зазначеними значеннями. Контейнери, завершені успішно (код завершення 0), виключаються з перевірки вимоги. Можливі значення:
- In: вимога задовольняється, якщо хоча б один код завершення контейнера (може бути кілька, якщо є кілька контейнерів, не обмежених полем 'containerName') входить до набору зазначених значень.
- NotIn: вимога задовольняється, якщо хоча б один код завершення контейнера (може бути кілька, якщо є кілька контейнерів, не обмежених полем 'containerName') не входить до набору зазначених значень.
Додаткові значення можуть бути додані в майбутньому. Клієнти повинні реагувати на невідомий оператор, вважаючи, що вимога не задоволена.
podFailurePolicy.rules.onExitCodes.values ([]int32), обовʼязково
Set: унікальні значення зберігатимуться під час обʼєднання
Визначає набір значень. Кожен повернутий код завершення контейнера (може бути кілька у випадку кількох контейнерів) перевіряється щодо цього набору значень з урахуванням оператора. Список значень має бути впорядкованим і не містити дублікатів. Значення '0' не може бути використано для оператора In. Потрібен принаймні один елемент. Максимально дозволено 255 елементів.
podFailurePolicy.rules.onExitCodes.containerName (string)
Обмежує перевірку кодів завершення контейнера контейнером з зазначеним імʼям. Коли null, правило застосовується до всіх контейнерів. Коли зазначено, воно має відповідати одному з імен контейнерів або init-контейнерів у шаблоні Podʼа.
podFailurePolicy.rules.onPodConditions ([]PodFailurePolicyOnPodConditionsPattern), обовʼязково
Atomic: буде замінено під час обʼєднання
Представляє вимогу до стану Podʼа. Вимога представлена як список шаблонів стан Podʼа. Вимога задовольняється, якщо хоча б один шаблон відповідає фактичному стану Podʼа. Максимально дозволено 20 елементів.
PodFailurePolicyOnPodConditionsPattern описує шаблон для відповідності фактичний стан Podʼа.
podFailurePolicy.rules.onPodConditions.status (string), обовʼязково
Визначає необхідний статус стану Podʼа. Для відповідності стану Podʼа потрібно, щоб зазначений статус відповідав статусу стану Podʼа. Стандартне значення — True.
podFailurePolicy.rules.onPodConditions.type (string), обовʼязково
Визначає необхідний тип стану Podʼа. Для відповідності стану Podʼа потрібно, щоб зазначений тип відповідав типу стану Podʼа.
successPolicy (SuccessPolicy)
successPolicy вказує політику, коли Job може бути оголошено успішним. Якщо це поле порожнє, застосовується стандартна поведінка — Job вважається успішним лише тоді, коли кількість успішно виконаних podʼів дорівнює значенню completions. Якщо поле вказане, воно має бути незмінним і працює тільки для Indexed Jobs. Після того, як Job відповідає SuccessPolicy, невикористані podʼи завершуються.
Це поле має рівень beta. Для використання цього поля потрібно увімкнути функцію
JobSuccessPolicy
(стандартно увімкнена).SuccessPolicy описує, коли Job може бути оголошено успішним на основі успішності деяких показників.
successPolicy.rules ([]SuccessPolicyRule), required
Atomic: буде замінено під час злиття
rules представляє список альтернативних правил для оголошення Jobs успішними до того, як
.status.succeeded >= .spec.completions
. Як тільки будь-яке з правил виконується, додається умова "SucceededCriteriaMet", і невикористані podʼи видаляються. Кінцевий стан для такого 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, воно не має стандартного значення і ніколи не оцінюється.
Альфа-рівень
backoffLimitPerIndex (int32)
Визначає ліміт кількості повторних спроб в межах індексу перед тим, як позначити цей індекс як невдалий. Коли цей параметр увімкнений, кількість невдач по індексу зберігається в анотації Podʼа batch.kubernetes.io/job-index-failure-count. Це поле можна встановити лише при completionMode=Indexed для завдання, і політика перезапуску Podʼа повинна бути Never. Поле незмінне. Це поле на рівні бета. Воно може бути використане, коли ввімкнено прапорець
JobBackoffLimitPerIndex
(стандартно увімкнено).managedBy (string)
Поле
ManagedBy
вказує контролер, який керує Job. Контролер Job у Kubernetes синхронізує jobʼи, які не мають цього поля взагалі або якщо значення поля — зарезервований рядокkubernetes.io/job-controller
, але пропускає синхронізацію Job із власними значенням у цьому полі. Значення має бути дійсним шляхом із префіксом домену (наприклад, acme.io/foo) — усі символи перед першим "/" мають бути дійсним піддоменом відповідно до RFC 1123. Усі символи після першого "/" мають бути дійсними символами HTTP-шляху згідно з RFC 3986. Значення не може перевищувати 63 символів. Це поле є незмінним.Це поле має рівень alpha. Контролер job приймає встановлення цього поля, коли ввімкнено функцію JobManagedBy (стандартно вимкнено).
maxFailedIndexes (int32)
Визначає максимальну кількість невдалих індексів перед тим, як позначити завдання як невдале, коли backoffLimitPerIndex встановлено. Як тільки кількість невдалих індексів перевищує це число, все завдання позначається як Failed і його виконання припиняється. Якщо залишити null, завдання продовжує виконання всіх своїх індексів і позначається станом завдання
Complete
. Це поле можна вказати лише, коли встановлено backoffLimitPerIndex. Воно може бути null або дорівнювати кількості completions. Воно обовʼязково і повинно бути менше або дорівнювати 10^4, коли кількість completions більша за 10^5. Це поле на рівні бета. Воно може бути використане, коли ввімкнено прапорецьJobBackoffLimitPerIndex
(стандартно увімкнено).podReplacementPolicy (string)
podReplacementPolicy визначає, коли створювати нові Podʼи на заміну. Можливі значення:
- TerminatingOrFailed означає, що ми створюємо Podʼи повторно, коли вони завершуються (мають metadata.deletionTimestamp) або не зазнали збою.
- Failed означає, що потрібно чекати, поки раніше створений Pod повністю завершиться (має phase Failed або Succeeded) перед створенням нового Podʼа на заміну.
При використанні podFailurePolicy, Failed є єдиним допустимим значенням. TerminatingOrFailed і Failed є допустимими значеннями, коли podFailurePolicy не використовується. Це поле на рівні бета. Щоб скористатися цією функцією, увімкніть функцію JobPodReplacementPolicy. Стандартно увімкнено.
JobStatus
JobStatus представляє поточний стан Job.
startTime (Time)
Представляє час, коли контролер Job почав обробку завдання. Коли Job створюється в призупиненому стані, це поле не встановлюється до першого відновлення. Це поле скидається кожного разу, коли Job відновлюється після призупинення. Воно представлене у форматі RFC3339 і є в UTC.
Якщо поле встановлено, його можна видалити лише після призупинення завдання. Поле не можна змінити, поки завдання не призупинено або не завершено.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
completionTime (Time)
Представляє час, коли завдання було завершено. Це поле може не встановлюватися в порядку "відбувається перед" у різних операціях. Воно представлене у форматі RFC3339 і є в UTC. Час завершення встановлюється, коли завдання успішно завершується, і тільки тоді. Значення не можна оновити або видалити. Значення вказує на той самий або пізніший момент часу, що і поле startTime.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
active (int32)
Кількість Podʼів в стані очікування та працюючих Podʼів, які не завершуються (без мітки видалення). Значення дорівнює нулю для завершених завдань.
failed (int32)
Кількість Podʼів, які досягли фази Failed. Значення зростає монотонно.
succeeded (int32)
Кількість Podʼів, які досягли фази Succeeded. Значення монотонно зростає для даної специфікації. Однак воно може зменшуватись у відповідь на скорочення кількості job, що еластично індексуються.
completedIndexes (string)
completedIndexes містить завершені індекси, коли .spec.completionMode = "Indexed" у текстовому форматі. Індекси представлені у вигляді десяткових чисел, розділених комами. Числа перелічені у порядку зростання. Три або більше послідовних числа стискаються і представлені першим і останнім елементами серії, розділеними дефісом. Наприклад, якщо завершені індекси 1, 3, 4, 5 і 7, вони представлені як "1,3-5,7".
conditions ([]JobCondition)
Patch strategy: обʼєднання за ключем
type
Atomic: буде замінено під час обʼєднання
Останні доступні спостереження за поточним станом обʼєкта. Коли Job не вдається, один зі станів матиме тип "Failed" і статус true. Коли Job призупинено, один зі станів матиме тип "Suspended" і статус true; коли Job відновлюється, статус цього стану стає false. Коли Job завершено, один з станів матиме тип "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 (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану завдання, 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ʼи з завершувачем. Коли Pod завершується (успішно або з помилкою), контролер виконує три кроки для врахування його у статусі завдання:
- Додає UID Podʼа до масивів у цьому полі.
- Видаляє завершувач Podʼа.
- Видаляє UID Podʼа з масивів, збільшуючи відповідний лічильник.
Старі завдання можуть не відстежуватися з використанням цього поля, у такому випадку поле залишається порожнім. Структура порожня для завершених завдань .
UncountedTerminatedPods містить UID Podʼів, які завершили роботу, але ще не враховані в лічильниках статусу завдання.
uncountedTerminatedPods.failed ([]string)
Set: унікальні значення зберігатимуться під час обʼєднання
failed містить UID Podʼів, що завершилися з помилкою.
uncountedTerminatedPods.succeeded ([]string)
Set: унікальні значення зберігатимуться під час обʼєднання
succeeded містить UID Podʼів, що завершилися успішно.
Бета-рівень
ready (int32)
Кількість активних Podʼів, які мають стан Ready та не завшуються (без deletionTimestamp)
Альфа-рівень
failedIndexes (string)
FailedIndexes зберігає невдалі індекси, коли spec.backoffLimitPerIndex є набором. Індекси представлені у текстовому форматі, аналогічному до поля
completedIndexes
, тобто вони зберігаються як десяткові цілі числа, розділені комами. Числа подані в порядку зростання. Три або більше послідовних числа стискаються і представлені першим та останнім елементом серії, розділеними дефісом. Наприклад, якщо невдалі індекси: 1, 3, 4, 5 і 7, вони представлені як "1,3-5,7". Набір невдалих індексів не може перетинатися з набором завершених індексів.Це поле знаходиться на бета-рівні. Його можна використовувати, коли ввімкнено функцію JobBackoffLimitPerIndex (стандартно увімкнено).
terminating (int32)
Кількість Podʼів, які завершуються (у фазі Pending або Running та мають deletionTimestamp).
Це поле знаходиться на бета-рівні. Контролер завдань заповнює це поле, коли ввімкнено функцію 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), обовʼязково
Список завдань (Job).
Операції
get
отримати вказане завдання
HTTP запит
GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Job): ОК
401: Unauthorized
get
отримати статус вказаного завдання
HTTP запит
GET /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Job): ОК
401: Unauthorized
list
перелік або перегляд обʼєктів типу Job
HTTP запит
GET /apis/batch/v1/namespaces/{namespace}/jobs
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (JobList): ОК
401: Unauthorized
list
перелік або перегляд обʼєктів типу Job
HTTP запит
GET /apis/batch/v1/jobs
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer timeoutSeconds
watch (в запиті): boolean
Відповідь
200 (JobList): ОК
401: Unauthorized
create
створення Job
HTTP запит
POST /apis/batch/v1/namespaces/{namespace}/jobs
Параметри
namespace (в шляху): string, обовʼязково
body: Job, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Job): ОК
201 (Job): Created
202 (Job): Accepted
401: Unauthorized
update
заміна вказаного Job
HTTP запит
PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
body: Job, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Job): ОК
201 (Job): Created
401: Unauthorized
update
заміна статусу вказаного Job
HTTP запит
PUT /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
body: Job, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Job): ОК
201 (Job): Created
401: Unauthorized
patch
часткове оновлення вказаного Job
HTTP запит
PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (Job): ОК
201 (Job): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного Job
HTTP запит
PATCH /apis/batch/v1/namespaces/{namespace}/jobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (Job): ОК
201 (Job): Created
401: Unauthorized
delete
видалення Job
HTTP запит
DELETE /apis/batch/v1/namespaces/{namespace}/jobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва завдання
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): ОК
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції Job
HTTP запит
DELETE /apis/batch/v1/namespaces/{namespace}/jobs
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): ОК
401: Unauthorized
11 - CronJob
apiVersion: batch/v1
import "k8s.io/api/batch/v1"
CronJob
CronJob являє собою конфігурацію одного завдання cron.
apiVersion: batch/v1
kind: CronJob
metadata (ObjectMeta):
Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (CronJobSpec):
Специфікація бажаної поведінки cron job, включаючи розклад. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (CronJobStatus):
Поточний статус cron job. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
CronJobSpec
CronJobSpec описує, як виглядатиме виконання завдання та коли воно буде запущено.
jobTemplate (JobTemplateSpec), обовʼязково
Вказує на шаблон задачі, яка буде створена під час виконання CronJob.
JobTemplateSpec описує дані, які повинні бути у задачі при створенні з шаблону
jobTemplate.metadata (ObjectMeta)
Стандартні метадані обʼєкта створених задач з цього шаблону. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
jobTemplate.spec (JobSpec)
Специфікація бажаної поведінки задачі. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
schedule (string), обовʼязково
Розклад у форматі Cron, див. https://uk.wikipedia.org/wiki/Cron.
timeZone (string)
Назва часового поясу для вказаного розкладу, див. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. Якщо не вказано, то буде використовуватись часовий пояс процесу kube-controller-manager. Допустимі назви часових поясів і зміщення завантажуються з системної бази даних часових поясів API-сервером під час валідації CronJob і контролером під час виконання. Якщо системна база даних часових поясів недоступна, використовується вбудована версія цієї бази. Якщо назва часового поясу стає недійсною протягом життєвого циклу CronJob або через зміну конфігурації хосту, контролер перестане створювати нові задачі та створить системну подію з причиною UnknownTimeZone. Додаткову інформацію можна знайти в https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones.
concurrencyPolicy (string)
Визначає, як обробляти одночасні виконання задачі. Допустимі значення:
- "Allow" (стандартно): дозволяє CronJobs запускати задачі одночасно;
- "Forbid": забороняє одночасні виконання, пропускаючи наступний запуск, якщо попередній ще не завершився;
- "Replace": скасовує поточну задачу і замінює її новою.
startingDeadlineSeconds (int64)
Необовʼязковий термін у секундах для запуску задачі, якщо вона пропустить запланований час з будь-якої причини. Пропущені виконання задач будуть вважатися неуспішними.
suspend (boolean)
Цей прапорець каже контролеру призупиняти подальші виконання, він не застосовується до вже запущених виконань. Стандартне значення — false.
successfulJobsHistoryLimit (int32)
Кількість успішно завершених задач, які потрібно зберегти. Значення повинно бути не відʼємним цілим числом. Стандартне значення — 3.
failedJobsHistoryLimit (int32)
Кількість невдало завершених задач, які потрібно зберегти. Значення повинно бути не відʼємним цілим числом. Стандартне значення — 1.
CronJobStatus
CronJobStatus представляє поточний стан cron job.
active ([]ObjectReference)
Atomic: буде замінено під час злиття
Список посилань на запущені зараз задачі.
lastScheduleTime (Time)
Інформація про час останнього успішного запуску задачі.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
lastSuccessfulTime (Time)
Інформація про час останнього успішного завершення задачі.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
CronJobList
CronJobList — це колекція cron job.
apiVersion: batch/v1
kind: CronJobList
metadata (ListMeta)
Стандартні метадані списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CronJob), обовʼязково
Список CronJobs.
Операції
get
отримати вказаний CronJob
HTTP-запит
GET /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (CronJob): OK
401: Unauthorized
get
отримати статус вказаного CronJob
HTTP-запит
GET /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (CronJob): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу CronJob
HTTP-запит
GET /apis/batch/v1/namespaces/{namespace}/cronjobs
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (CronJobList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу CronJob
HTTP-запит
GET /apis/batch/v1/cronjobs
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (CronJobList): OK
401: Unauthorized
create
створення CronJob
HTTP-запит
POST /apis/batch/v1/namespaces/{namespace}/cronjobs
Параметри
namespace (в шляху): string, обовʼязково
body: CronJob, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CronJob): OK
201 (CronJob): Created
202 (CronJob): Accepted
401: Unauthorized
update
заміна вказаного CronJob
HTTP-запит
PUT /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
body: CronJob, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
update
заміна статусу вказаного CronJob
HTTP-запит
PUT /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
body: CronJob, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
patch
часткове оновлення вказаного CronJob
HTTP-запит
PATCH /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного CronJob
HTTP-запит
PATCH /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (CronJob): OK
201 (CronJob): Created
401: Unauthorized
delete
видалення CronJob
HTTP-запит
DELETE /apis/batch/v1/namespaces/{namespace}/cronjobs/{name}
Параметри
name (в шляху): string, обовʼязково
назва CronJob
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції CronJob
HTTP-запит
DELETE /apis/batch/v1/namespaces/{namespace}/cronjobs
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
12 - HorizontalPodAutoscaler
apiVersion: autoscaling/v1
import "k8s.io/api/autoscaling/v1"
HorizontalPodAutoscaler
Конфігурація горизонтального автомасштабування Podʼів.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
spec (HorizontalPodAutoscalerSpec)
spec визначає поведінку автомасштабування. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
status (HorizontalPodAutoscalerStatus)
status містить поточну інформацію про автомасштабування.
HorizontalPodAutoscalerSpec
Специфікація горизонтального автомасштабування Podʼів.
maxReplicas (int32), обовʼязково
maxReplicas — верхня межа для кількості Podʼів, яку може встановити автомасштабувальник; не може бути менше, ніж MinReplicas.
scaleTargetRef (CrossVersionObjectReference), обовʼязково
посилання на масштабований ресурс; горизонтальний автомасштабувальник Podʼів буде вивчати поточне використання ресурсу і встановлювати бажану кількість Podʼів за допомогою його субресурсу Scale (масштаб).
CrossVersionObjectReference містить достатньо інформації для ідентифікації зазначеного ресурсу.
scaleTargetRef.kind (string), обовʼязково
kind — це тип посилання; Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
scaleTargetRef.name (string), обовʼязково
name — це імʼя посилання; Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
scaleTargetRef.apiVersion (string)
apiVersion - версія API посилання
minReplicas (int32)
minReplicas — нижня межа для кількості реплік, до яких може масштабуватися автомасштабувальник. Стандартне значення — 1 Pod. minReplicas може бути 0, якщо увімкнутий альфа-функціонал HPAScaleToZero і налаштовано принаймні одну метрику Object або External. Масштабування активне, поки є принаймні значення однієї метрики.
targetCPUUtilizationPercentage (int32)
targetCPUUtilizationPercentage — це цільове середнє використання CPU (представлене як відсоток від запитаного показника CPU) для всіх Podʼів; якщо не вказано, буде використана стандартна політика автоматичного масштабування.
HorizontalPodAutoscalerStatus
Поточний статус горизонтального автомасштабування Podʼів.
currentReplicas (int32), обовʼязково
currentReplicas — поточна кількість реплік Podʼів, що керуються цим автомасштабувальником.
desiredReplicas (int32), обовʼязково
desiredReplicas — бажана кількість реплік Podʼів, що керуються цим автомасштабувальником.
currentCPUUtilizationPercentage (int32)
currentCPUUtilizationPercentage — поточне середнє використання CPU у всіх Podʼах, виражене як відсоток від запитаної кількості CPU; наприклад, значення 70 означає, що в середньому Pod використовує зараз 70% свого запитаного CPU.
lastScaleTime (Time)
lastScaleTime — час останнього масштабування HorizontalPodAutoscaler кількості Podʼів; використовується автомасштабувальником для контролю частоти змін кількості Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
observedGeneration — останнє покоління, сяке спостерігається цим автомасштабувальником.
HorizontalPodAutoscalerList
Список обʼєктів горизонтального автомасштабування Podʼів.
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscalerList
metadata (ListMeta)
Стандартні метадані списку.
items ([]HorizontalPodAutoscaler), обовʼязкове поле
items — список обʼєктів горизонтального автомасштабування Podʼів.
Операції
get
отримати вказаний HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
get
отримати статус вказаного HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
list
список або перегляд за обʼєктів типу HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
list
список або перегляд обʼєктів типу HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v1/horizontalpodautoscalers
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (HorizontalPodAutoscalerList): ОК
401: Unauthorized
create
створення HorizontalPodAutoscaler
HTTP запит
POST /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): ОК
201 (HorizontalPodAutoscaler): Created
202 (HorizontalPodAutoscaler): Accepted
401: Unauthorized
update
заміна вказаного HorizontalPodAutoscaler
HTTP запит
PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
Назва HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): ОК
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
update
заміна статусу вказаного HorizontalPodAutoscaler
HTTP запит
PUT /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
Назва HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): ОК
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
часткове оновлення вказаного HorizontalPodAutoscaler
HTTP запит
PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
Назва HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): ОК
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного HorizontalPodAutoscaler
HTTP запит
PATCH /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
Назва HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): ОК
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
delete
видалення HorizontalPodAutoscaler
HTTP запит
DELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
Назва HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): ОК
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції HorizontalPodAutoscaler
HTTP запит
DELETE /apis/autoscaling/v1/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): ОК
401: Unauthorized
13 - HorizontalPodAutoscaler
apiVersion: autoscaling/v2
import "k8s.io/api/autoscaling/v2"
HorizontalPodAutoscaler
HorizontalPodAutoscaler — це конфігурація для горизонтального автомасштабування, яка автоматично керує кількістю реплік будь-якого ресурсу, що реалізує субресурс масштабування, на основі вказаних метрик.
Зрозуміло, ось переклад без формату YAML:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata (ObjectMeta):
metadata — стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (HorizontalPodAutoscalerSpec):
spec — специфікація поведінки автомасштабування. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
status (HorizontalPodAutoscalerStatus):
status містить поточну інформацію про автомасштабування.
HorizontalPodAutoscalerSpec
HorizontalPodAutoscalerSpec описує бажану функціональність HorizontalPodAutoscaler.
maxReplicas (int32), обовʼязково
maxReplicas — верхня межа кількості реплік, до якої може масштабуватись автомасштабувальник. Не може бути менше minReplicas.
scaleTargetRef (CrossVersionObjectReference), обовʼязково
scaleTargetRef вказує на цільовий ресурс для масштабування і використовується для збору метрик для Podʼів, а також для зміни кількості реплік.
CrossVersionObjectReference містить достатньо інформації для ідентифікації вказаного ресурсу.
scaleTargetRef.kind (string), обовʼязково
kind — тип вказаного ресурсу; Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
scaleTargetRef.name (string), обовʼязково
name — назва вказаного ресурсу; Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
scaleTargetRef.apiVersion (string)
apiVersion — версія API вказаного ресурсу
minReplicas (int32)
minReplicas — нижня межа кількості реплік, до якої може масштабуватись автомасштабувальник. Стандартне значення — 1 Pod. minReplicas може бути 0, якщо ввімкнути альфа-функцію HPAScaleToZero і налаштувати щонайменше одну метрику типу Object або External. Масштабування активне, поки є принаймні одне значення метрики.
behavior (HorizontalPodAutoscalerBehavior)
behavior — налаштовує поведінку масштабування цільового ресурсу як в напрямку збільшення, так і в напрямку зменшення (поля scaleUp та scaleDown відповідно). Якщо не вказано, будуть використані типові правила масштабування HPAScalingRules для збільшення і зменшення.
HorizontalPodAutoscalerBehavior налаштовує поведінку масштабування цільового ресурсу як в напрямку збільшення, так і в напрямку зменшення (поля scaleUp та scaleDown відповідно).
behavior.scaleDown (HPAScalingRules)
scaleDown — політика масштабування для зменшення. Якщо не встановлено, типове значення дозволяє зменшувати до minReplicas Podʼів з вікном стабілізації 300 секунд (тобто використовується найкраще рекомендоване значення за останні 300 секунд).
HPAScalingRules налаштовує поведінку масштабування для одного напрямку. Ці правила застосовуються після обчислення бажаної кількості реплік з метрик для HPA. Вони можуть обмежувати швидкість масштабування, вказуючи політики масштабування, та запобігати "повзучості" за допомогою визначення вікна стабілізації, щоб кількість реплік не встановлювалась миттєво, а вибирався найбезпечніше значення з вікна стабілізації.
behavior.scaleDown.policies ([]HPAScalingPolicy)
Atomic: will be replaced during a merge
policies — список потенційних політик масштабування, які можуть використовуватись під час масштабування. Принаймні одна політика повинна бути вказана, інакше HPAScalingRules буде відкинуто як недійсне
HPAScalingPolicy — це одна політика, яка повинна виконуватися для вказаного інтервалу в минулому.
behavior.scaleDown.policies.type (string), обовʼязково
type — використовується для зазначення політики масштабування.
behavior.scaleDown.policies.value (int32), обовʼязково
value — містить кількість зміни, що дозволяється політикою. Вона повинна бути більше нуля.
behavior.scaleDown.policies.periodSeconds (int32), обовʼязково
periodSeconds — визначає вікно часу, протягом якого політика повинна бути true. PeriodSeconds повинен бути більше нуля і менше або рівний 1800 (30 хвилин).
behavior.scaleDown.selectPolicy (string)
selectPolicy — використовується для зазначення того, яка політика повинна бути використана. Якщо не встановлено, використовується типове значення Max.
behavior.scaleDown.stabilizationWindowSeconds (int32)
stabilizationWindowSeconds — кількість секунд, протягом яких враховуються попередні рекомендації під час збільшення або зменшення масштабування. stabilizationWindowSeconds повинен бути більше або рівний нулю і менше або рівний 3600 (одна година). Якщо не встановлено, використовуються типові значення:
- Для збільшення масштабування: 0 (тобто стабілізація не виконується).
- Для зменшення масштабування: 300 (тобто вікно стабілізації 300 секунд).
behavior.scaleUp (HPAScalingRules)
scaleUp — це політика масштабування вгору. Якщо не встановлено, використовується стандартне значення, яке є найбільшим з:
- збільшення не більше ніж на 4 Podʼи за 60 секунд
- подвоєння кількості Podʼів за 60 секунд
Стабілізація не використовується.
HPAScalingRules налаштовує поведінку масштабування в одному напрямку. Ці правила застосовуються після обчислення DesiredReplicas з метрик для HPA. Вони можуть обмежити швидкість масштабування, вказуючи політики масштабування. Вони можуть запобігти нестабільному масштабуванню, вказуючи вікно стабілізації, щоб кількість реплік не змінювалася миттєво, а вибиралося найбезпечніше значення з вікна стабілізації.
behavior.scaleUp.policies ([]HPAScalingPolicy)
Atomic: буде замінено під час обʼєднання
policies — це список можливих політик масштабування, які можуть бути використані під час масштабування. Має бути вказана принаймні одна політика, інакше HPAScalingRules буде вважатися недійсним.
HPAScalingPolicy — це окрема політика, якої треба має бути true протягом заданого інтервалу в минулому.
behavior.scaleUp.policies.type (string), обовʼязково
type — використовується для зазначення політики масштабування.
behavior.scaleUp.policies.value (int32), обовʼязково
value — містить кількість змін, дозволених політикою. Значення має бути більше нуля.
behavior.scaleUp.policies.periodSeconds (int32), обовʼязково
periodSeconds визначає вікно часу, протягом якого політика має бути true. PeriodSeconds має бути більше нуля та менше або дорівнювати 1800 (30 хвилин).
behavior.scaleUp.selectPolicy (string)
selectPolicy використовується для вказівки, яка політика має бути використана. Якщо не встановлено, використовується стандартне значення Max.
behavior.scaleUp.stabilizationWindowSeconds (int32)
stabilizationWindowSeconds — це кількість секунд, протягом яких минулі рекомендації мають враховуватися під час масштабування вгору або вниз. StabilizationWindowSeconds має бути більше або дорівнювати нулю та менше або дорівнювати 3600 (одна година). Якщо не встановлено, використовуються стандартні значення:
- Для масштабування вгору: 0 (тобто стабілізація не виконується).
- Для масштабування вниз: 300 (тобто вікно стабілізації триває 300 секунд).
metrics ([]MetricSpec)
Atomic: буде замінено під час обʼєднання
metrics містить специфікації для обчислення бажаної кількості реплік (буде використана максимальна кількість реплік за всіма метриками). Бажана кількість реплік обчислюється множенням відношення між цільовим значенням та поточним значенням на поточну кількість Podʼів. Таким чином, метрики, що використовуються, мають зменшуватися зі збільшенням кількості Podʼів, і навпаки. Дивіться індивідуальні типи джерел метрик для отримання додаткової інформації про те, як кожен тип метрик має реагувати. Якщо не встановлено, стандартна метрика з буде встановлена на 80% середнього використання CPU.
MetricSpec визначає, як масштабуватися на основі однієї метрики (лише
type
та одне інше відповідне поле мають бути встановлені одночасно).metrics.type (string), обовʼязково
type — тип джерела метрики. Має бути одним з "ContainerResource", "External", "Object", "Pods" або "Resource", кожен з яких відповідає відповідному полю в обʼєкті. Примітка: тип "ContainerResource" доступний лише за умови, що увімкнено функцію HPAContainerMetrics.
metrics.containerResource (ContainerResourceMetricSource)
containerResource стосується метрики ресурсу (наприклад, ті, що вказані в запитах і лімітах), відомої Kubernetes, яка описує один контейнер у кожному Podʼі поточного цільового масштабу (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен Pod за допомогою джерела "pods". Це альфа-функція і може бути увімкнена прапорцем функції HPAContainerMetrics.
ContainerResourceMetricSource вказує, як масштабуватися на основі метрики ресурсу, відомої Kubernetes, як вказано в запитах і лімітах, описуючи кожен Pod у поточному цільовому масштабі (наприклад, CPU або памʼять). Значення будуть усереднені перед порівнянням з цільовим значенням. Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен Pod за допомогою джерела "pods". Має бути встановлений лише один тип "target".
metrics.containerResource.container (string), обовʼязково
container — це назва контейнера в Podʼах цільового масштабу.
metrics.containerResource.name (string), обовʼязково
name — це назва відповідного ресурсу.
metrics.containerResource.target (MetricTarget), обовʼязково
target — визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.containerResource.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.containerResource.target.averageUtilization (int32)
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
metrics.containerResource.target.averageValue (Quantity)
averageValue – це цільове значення середнього значення метрики по всім відповідним Podʼам (як кількість).
metrics.containerResource.target.value (Quantity)
value — це цільове значення метрики (як кількість).
metrics.external (ExternalMetricSource)
external стосується глобальної метрики, яка не повʼязана з жодним обʼєктом Kubernetes. Це дозволяє автоматичне масштабування на основі інформації, що надходить від компонентів, які працюють за межами кластера (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
ExternalMetricSource вказує, як масштабуватися на основі метрики, не повʼязаної з жодним обʼєктом Kubernetes (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
metrics.external.metric (MetricIdentifier), обовʼязково
metric — визначає цільову метрику за назвою та селектором.
MetricIdentifier визначає назву та, за потреби, селектор для метрики.
metrics.external.metric.name (string), обовʼязково
name — це назва даної метрики.
metrics.external.metric.selector (LabelSelector)
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
metrics.external.target (MetricTarget), обовʼязково
target — визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.external.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.external.target.averageUtilization (int32)
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
metrics.external.target.averageValue (Quantity)
averageValue — це цільове значення середнього значення метрики по всім відповідним Podʼам (як кількість).
metrics.external.target.value (Quantity)
value – це цільове значення метрики (як кількість).
metrics.object (ObjectMetricSource)
object — стосується метрики, що описує один обʼєкт Kubernetes (наприклад, кількість запитів на секунду на обʼєкті Ingress).
ObjectMetricSource вказує, як масштабуватися на основі метрики, що описує обʼєкт Kubernetes (наприклад, кількість запитів на секунду на обʼєкті Ingress).
metrics.object.describedObject (CrossVersionObjectReference), обовʼязково
describedObject визначає опис обʼєкта, такого як тип, імʼя та версія API.
CrossVersionObjectReference містить достатньо інформації для ідентифікації відповідного ресурсу.
metrics.object.describedObject.kind (string), обовʼязково
kind — це тип посилання; Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metrics.object.describedObject.name (string), обовʼязково
name — це імʼя посилання; Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
metrics.object.describedObject.apiVersion (string)
apiVersion — це версія API посилання.
metrics.object.metric (MetricIdentifier), обовʼязково
metric — визначає цільову метрику за назвою та селектором.
MetricIdentifier визначає назву та, за потреби, селектор для метрики.
metrics.object.metric.name (string), обовʼязково
name — це назва даної метрики.
metrics.object.metric.selector (LabelSelector)
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
metrics.object.target (MetricTarget), обовʼязково
target — визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.object.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.object.target.averageUtilization (int32)
averageUtilization — цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
metrics.object.target.averageValue (Quantity)
averageValue — цільове значення середнього значення метрики по всім відповідним Podʼам (як кількість).
metrics.object.target.value (Quantity)
value — цільове значення метрики (як кількість).
metrics.pods (PodsMetricSource)
pods — стосується метрики, що описує кожен Pod у поточному цільовому масштабі (наприклад, кількість транзакцій на секунду). Значення будуть усереднені перед порівнянням з цільовим значенням.
PodsMetricSource вказує, як масштабуватися на основі метрики, що описує кожен Pod у поточному цільовому масштабі (наприклад, кількість транзакцій на секунду). Значення будуть усереднені перед порівнянням з цільовим значенням.
metrics.pods.metric (MetricIdentifier), обовʼязково
metric — визначає цільову метрику за назвою та селектором.
MetricIdentifier визначає назву та, за потреби, селектор для метрики.
metrics.pods.metric.name (string), обовʼязково
name — це назва даної метрики.
metrics.pods.metric.selector (LabelSelector)
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
metrics.pods.target (MetricTarget), обовʼязково
target визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.pods.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.pods.target.averageUtilization (int32)
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
metrics.pods.target.averageValue (Quantity)
averageValue — це цільове значення середнього значення метрики по всім відповідним Podʼам (як кількість).
metrics.pods.target.value (Quantity)
value — це цільове значення метрики (як кількість).
metrics.resource (ResourceMetricSource)
resource — стосується метрики ресурсу (наприклад, ті, що вказані в запитах і лімітах), відомої Kubernetes, яка описує кожен у поточному цільовому масштабі (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен за допомогою джерела "pods".
ResourceMetricSource вказує, як масштабуватися на основі метрики ресурсу, відомої Kubernetes, як вказано в запитах і лімітах, описуючи кожен у поточному цільовому масштабі (наприклад, CPU або памʼять). Значення будуть усереднені перед порівнянням з цільовим значенням. Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен под за допомогою джерела "pods". Повинен бути встановлений лише один тип "target".
metrics.resource.name (string), обовʼязково
name — це назва ресурсу.
metrics.resource.target (MetricTarget), обовʼязково
target — визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.resource.target.type (string), обовʼязково
type представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.resource.target.averageUtilization (int32)
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
metrics.resource.target.averageValue (Quantity)
averageValue — це цільове значення середнього значення метрики по всім відповідним Podʼам (як кількість).
metrics.resource.target.value (Quantity)
value —це цільове значення метрики (як кількість).
HorizontalPodAutoscalerStatus
HorizontalPodAutoscalerStatus описує поточний стан горизонтального автомасштабувальника Podʼів.
desiredReplicas (int32), обовʼязково
desiredReplicas — це бажана кількість реплік Podʼів, якими керує цей автомасштабувальник, відповідно до останнього обчислення автомасштабувальника.
conditions ([]HorizontalPodAutoscalerCondition)
Patch strategy: обʼєднання за ключем
type
Map: під час обʼєднання зберігатимуться унікальні значення за ключем type
conditions — це набір станів, необхідних для масштабування цільового обʼєкта автомасштабувальником, та вказує, чи було їх досягнуто.
HorizontalPodAutoscalerCondition описує стан HorizontalPodAutoscaler у певний момент часу.
conditions.status (string), обовʼязково
status — це статус стану (True, False, Unknown)
conditions.type (string), обовʼязково
type описує поточний стан
conditions.lastTransitionTime (Time)
lastTransitionTime — це останній час, коли стан перейшла з одного стану в інший
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message - це зрозуміле людині пояснення, що містить деталі про зміну стану
conditions.reason (string)
reason — це причина останньї зміни стану.
currentMetrics ([]MetricStatus)
Atomic: буде замінено під час обʼєднання
currentMetrics — це останній прочитаний статус метрик, які використовує цей автомасштабувальник.
MetricStatus описує останній прочитаний статус окремої метрики.
currentMetrics.type (string), обовʼязково
type — це тип джерела метрики. Це буде один з "ContainerResource", "External", "Object", "Pods" або "Resource", кожен з яких відповідає відповідному полю в обʼєкті. Примітка: тип "ContainerResource" доступний лише за увімкненого прапора функції HPAContainerMetrics.
currentMetrics.containerResource (ContainerResourceMetricStatus)
container resource стосується метрики ресурсу (такої як зазначено в запитах та обмеженнях), відомої Kubernetes, що описує окремий контейнер у кожному Podʼі в поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
ContainerResourceMetricStatus вказує поточне значення метрики ресурсу, відомої Kubernetes, як зазначено в запитах та обмеженнях, що описує окремий контейнер у кожному Podʼі в поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
currentMetrics.containerResource.container (string), обовʼязково
container — це імʼя контейнера в Podʼах цільового масштабування
currentMetrics.containerResource.current (MetricValueStatus), обовʼязково
current — містить поточне значення для даної метрики
MetricValueStatus містить поточне значення метрики
currentMetrics.containerResource.current.averageUtilization (int32)
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentMetrics.containerResource.current.averageValue (Quantity)
averageValue — це поточне середнє значення метрики серед усіх відповідних Podʼів (як кількість)
currentMetrics.containerResource.current.value (Quantity)
value — це поточне значення метрики (як кількість).
currentMetrics.containerResource.name (string), обовʼязково
name — це імʼя ресурсу, про який йдеться.
currentMetrics.external (ExternalMetricStatus)
external стосується глобальної метрики, яка не повʼязана з жодним обʼєктом Kubernetes. Вона дозволяє автомасштабування на основі інформації, що надходить від компонентів, що працюють за межами кластера (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
ExternalMetricStatus вказує поточне значення глобальної метрики, не повʼязаної з жодним обʼєктом Kubernetes.
currentMetrics.external.current (MetricValueStatus), обовʼязково
current — містить поточне значення для даної метрики
MetricValueStatus містить поточне значення метрики
currentMetrics.external.current.averageUtilization (int32)
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentMetrics.external.current.averageValue (Quantity)
averageValue — це поточне середнє значення метрики серед усіх відповідних Podʼів (як кількість)
currentMetrics.external.current.value (Quantity)
value — це поточне значення метрики (як кількість).
currentMetrics.external.metric (MetricIdentifier), обовʼязково
metric — ідентифікує цільову метрику за імʼям і селектором
MetricIdentifier визначає імʼя та, за потреби, селектор для метрики
currentMetrics.external.metric.name (string), обовʼязково
name — це імʼя даної метрики
currentMetrics.external.metric.selector (LabelSelector)
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.object (ObjectMetricStatus)
object стосується метрики, що описує окремий обʼєкт Kubernetes (наприклад, кількість запитів на секунду для обʼєкта Ingress).
ObjectMetricStatus вказує поточне значення метрики, що описує обʼєкт Kubernetes (наприклад, кількість запитів на секунду для обʼєкта Ingress).
currentMetrics.object.current (MetricValueStatus), обовʼязково
current — містить поточне значення для даної метрики
MetricValueStatus містить поточне значення метрики
currentMetrics.object.current.averageUtilization (int32)
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentMetrics.object.current.averageValue (Quantity)
averageValue — це поточне середнє значення метрики серед усіх відповідних Podʼів (як кількість)
currentMetrics.object.current.value (Quantity)
value — це поточне значення метрики (як кількість).
currentMetrics.object.describedObject (CrossVersionObjectReference), обовʼязково
DescribedObject вказує описи обʼєкта, такі як kind, name, apiVersion
CrossVersionObjectReference містить достатньо інформації, щоб ідентифікувати вказаний ресурс.
currentMetrics.object.describedObject.kind (string), обовʼязково
kind — це тип посилання; Більше інформації: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
currentMetrics.object.describedObject.name (string), обовʼязково
name — це імʼя посилання; Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
currentMetrics.object.describedObject.apiVersion (string)
apiVersion — це версія API посилання
currentMetrics.object.metric (MetricIdentifier), обовʼязково
metric — ідентифікує цільову метрику за імʼям і селектором
MetricIdentifier визначає імʼя та, за потреби, селектор для метрики
currentMetrics.object.metric.name (string), обовʼязково
name — це імʼя даної метрики
currentMetrics.object.metric.selector (LabelSelector)
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.pods (PodsMetricStatus)
pods — стосується метрики, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, кількість оброблених транзакцій на секунду). Значення буде усереднено перед порівнянням з цільовим значенням.
PodsMetricStatus вказує поточне значення метрики, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, кількість оброблених транзакцій на секунду).
currentMetrics.pods.current (MetricValueStatus), обовʼязково
current — містить поточне значення для даної метрики
MetricValueStatus містить поточне значення метрики
currentMetrics.pods.current.averageUtilization (int32)
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentMetrics.pods.current.averageValue (Quantity)
averageValue — це поточне значення середньої метрики серед усіх відповідних Podʼів (як кількість)
currentMetrics.pods.current.value (Quantity)
value — це поточне значення метрики (як кількість).
currentMetrics.pods.metric (MetricIdentifier), обовʼязково
metric — ідентифікує цільову метрику за імʼям і селектором
MetricIdentifier визначає імʼя та, за потреби, селектор для метрики
currentMetrics.pods.metric.name (string), обовʼязково
name — це імʼя даної метрики
currentMetrics.pods.metric.selector (LabelSelector)
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.resource (ResourceMetricStatus)
resource — стосується метрики ресурсу (такої як зазначено в запитах та обмеженнях), відомої Kubernetes, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
ResourceMetricStatus вказує поточне значення метрики ресурсу, відомої Kubernetes, як зазначено в запитах та обмеженнях, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
currentMetrics.resource.current (MetricValueStatus), обовʼязково
current містить поточне значення для даної метрики
MetricValueStatus містить поточне значення метрики
currentMetrics.resource.current.averageUtilization (int32)
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentMetrics.resource.current.averageValue (Quantity)
averageValue — це поточне середнє значення метрики серед усіх відповідних Podʼів (як кількість)
currentMetrics.resource.current.value (Quantity)
value — це поточне значення метрики (як кількість).
currentMetrics.resource.name (string), обовʼязково
name — це імʼя ресурсу, про який йдеться.
currentReplicas (int32)
currentReplicas — це поточна кількість реплік Podʼів, якими керує цей автомасштабувальник, як це було останній раз спостережено автомасштабувальником.
lastScaleTime (Time)
lastScaleTime — це останній час, коли HorizontalPodAutoscaler масштабував кількість Podʼів, використовується автомасштабувальником для контролю частоти зміни кількості Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
observedGeneration — це останнє покоління, яке спостерігав цей автомасштабувальник.
HorizontalPodAutoscalerList
HorizontalPodAutoscalerList — це список обʼєктів горизонтального автомасштабувальника Podʼів.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscalerList
metadata (ListMeta)
metadata — це стандартні метадані списку.
items ([]HorizontalPodAutoscaler), обовʼязково
items — це список обʼєктів горизонтального автомасштабувальника Podʼів.
Операції
get
отримати вказаний HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
get
отримати статус вказаного HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
list
перелік або перегляд за обʼєктів типу HorizontalPodAutoscaler
HTTP запит
GET /apis/autoscaling/v2/horizontalpodautoscalers
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (HorizontalPodAutoscalerList): OK
401: Unauthorized
create
створення HorizontalPodAutoscaler
HTTP запит
POST /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
202 (HorizontalPodAutoscaler): Accepted
401: Unauthorized
update
заміна вказаний HorizontalPodAutoscaler
HTTP запит
PUT /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
update
заміна статусу вказаного HorizontalPodAutoscaler
HTTP запит
PUT /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: HorizontalPodAutoscaler, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
часткове оновлення вказаного HorizontalPodAutoscaler
HTTP запит
PATCH /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного HorizontalPodAutoscaler
HTTP запит
PATCH /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
201 (HorizontalPodAutoscaler): Created
401: Unauthorized
delete
видалення HorizontalPodAutoscaler
HTTP запит
DELETE /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя HorizontalPodAutoscaler
namespace (в шляху): string, обовʼязково
body: deleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (HorizontalPodAutoscaler): OK
202 (HorizontalPodAutoscaler): Accepted
401: Unauthorized
deletecollection
видалення колекції HorizontalPodAutoscaler
HTTP запит
DELETE /apis/autoscaling/v2/namespaces/{namespace}/horizontalpodautoscalers
Параметри
namespace (в шляху): string, обовʼязковий
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): булеве значення
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
14 - PriorityClass
PriorityClass
визначає зіставлення імені класу пріоритету з цілим значенням пріоритету.apiVersion: scheduling.k8s.io/v1
import "k8s.io/api/scheduling/v1"
PriorityClass
PriorityClass
визначає зіставлення імені класу пріоритету з цілим значенням пріоритету.
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
value (int32), обовʼязково
Представляє ціле значення цього класу пріоритету. Це фактичний пріоритет, який отримують Podʼи, коли вони мають імʼя цього класу у їхній специфікації.
description (string)
Опис є довільним рядком, який зазвичай надає вказівки про те, коли слід використовувати цей клас пріоритету.
globalDefault (boolean)
Визначає, чи слід вважати цей PriorityClass за стандартний пріоритет для Podʼів, які не мають жодного класу пріоритету. Може бути встановлено лише один PriorityClass як
globalDefault
. Однак, якщо існує більше одного PriorityClass з полемglobalDefault
, встановленим на true, то за стандартний пріоритет буде використовувати найменше значення серед таких глобальних пріоритетних класів.preemptionPolicy (string)
Політика для випередження Podʼів з нижчим пріоритетом. Один із варіантів: Never, PreemptLowerPriority. Стандартно використовується PreemptLowerPriority, якщо не встановлено жодного значення.
PriorityClassList
apiVersion: scheduling.k8s.io/v1
kind: PriorityClassList
metadata (ListMeta)
Стандартні метадані списку. Додаткова інформація: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]PriorityClass), обовʼязково
items — це список класів пріоритету
Операції
get
отримати вказаний PriorityClass
HTTP запит
GET /apis/scheduling.k8s.io/v1/priorityclasses/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityClass
pretty (в запиті): string
Відповідь
200 (PriorityClass): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PriorityClass
HTTP запит
GET /apis/scheduling.k8s.io/v1/priorityclasses
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PriorityClassList): OK
401: Unauthorized
create
створення PriorityClass
HTTP запит
POST /apis/scheduling.k8s.io/v1/priorityclasses
Параметри
body: PriorityClass, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityClass): OK
201 (PriorityClass): Created
202 (PriorityClass): Accepted
401: Unauthorized
update
заміна вказаного PriorityClass
HTTP запит
PUT /apis/scheduling.k8s.io/v1/priorityclasses/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityClass
body: PriorityClass, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityClass): OK
201 (PriorityClass): Created
401: Unauthorized
patch
часткове оновлення вказаного PriorityClass
HTTP запит
PATCH /apis/scheduling.k8s.io/v1/priorityclasses/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityClass
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PriorityClass): OK
201 (PriorityClass): Created
401: Unauthorized
delete
видалення PriorityClass
HTTP запит
DELETE /apis/scheduling.k8s.io/v1/priorityclasses/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityClass
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
видалення колекції PriorityClass
HTTP запит
DELETE /apis/scheduling.k8s.io/v1/priorityclasses
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
15 - PodSchedulingContext v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
PodSchedulingContext
Обʼєкти PodSchedulingContext містять інформацію, необхідну для планування Pod з ResourceClaims, що використовують режим виділення "WaitForFirstConsumer".
Це тип альфа-версії та потребує включення функціональних можливостей DRAControlPlaneController.
apiVersion: resource.k8s.io/v1alpha3
kind: PodSchedulingContext
metadata (ObjectMeta)
Метадані стандартного обʼєкта
spec (PodSchedulingContextSpec), обовʼязково
Специфікація описує, де потрібні ресурси для Pod.
status (PodSchedulingContextStatus)
Статус описує, де можуть бути виділені ресурси для Pod.
PodSchedulingContextSpec
PodSchedulingContextSpec описує, де потрібні ресурси для Pod.
potentialNodes ([]string)
Atomic: буде замінено під час злиття
PotentialNodes перелічує вузли, де можливий запуск Pod.
Розмір цього поля обмежений 128. Цього достатньо для багатьох кластерів. В більших кластерах може знадобитися більше спроб для знаходження вузла, що відповідає всім очікуваним ресурсам. В майбутньому це обмеження може бути збільшено, але не зменшено.
selectedNode (string)
SelectedNode — це вузол, для якого буде виконана спроба виділити ресурси, на які посилається Pod і які використовують виділення "WaitForFirstConsumer".
PodSchedulingContextStatus
PodSchedulingContextStatus описує, де можуть бути виділені ресурси для Pod.
resourceClaims ([]ResourceClaimSchedulingStatus)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
ResourceClaims описує доступність ресурсів для кожного входження pod.spec.resourceClaims, де відповідний ResourceClaim використовує режим виділення "WaitForFirstConsumer".
ResourceClaimSchedulingStatus містить інформацію про конкретний ResourceClaim з режимом виділення "WaitForFirstConsumer".
resourceClaims.name (string), обовʼязково
Імʼя відповідає полю pod.spec.resourceClaims[*].Name.
resourceClaims.unsuitableNodes ([]string)
Atomic: буде замінено під час злиття
UnsuitableNodes перелічує вузли, для яких ResourceClaim не може бути виділено.
Розмір цього поля обмежений 128, так само як і для PodSchedulingSpec.PotentialNodes. Це обмеження може бути збільшено в майбутньому, але не зменшено.
PodSchedulingContextList
PodSchedulingContextList є колекцією обʼєктів планування Pod.
apiVersion: resource.k8s.io/v1alpha3
kind: PodSchedulingContextList
metadata (ListMeta)
Стандартні метадані списку
items ([]PodSchedulingContext), обовʼязково
Items — це список обʼєктів PodSchedulingContext.
Операції
get
отримати вказаний PodSchedulingContext
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя контексту планування для Pod
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
401: Unauthorized
get
отримати статус вказаного PodSchedulingContext
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя контексту планування для Pod
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PodSchedulingContext
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodSchedulingContextList): OK
401: Unauthorized
list
список або перегляд обʼєктів типу PodSchedulingContext
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/podschedulingcontexts
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PodSchedulingContextList): OK
401: Unauthorized
create
створення PodSchedulingContext
HTTP запит
POST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
Параметри
namespace (в шляху): string, обовʼязково
body: PodSchedulingContext, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
202 (PodSchedulingContext): Accepted
401: Unauthorized
update
заміна вказаного PodSchedulingContext
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя контексту планування для Pod
namespace (в шляху): string, обовʼязково
body: PodSchedulingContext, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
update
заміна статусус вказаного PodSchedulingContext
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва the PodSchedulingContext
namespace (в шляху): string, обовʼязково
body: PodSchedulingContext, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
patch
часткове оновлення вказаного PodSchedulingContext
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя контексту планування для Pod
namespace (в шляху): string, обовʼязково
body: PodSchedulingContext, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
401: Unauthorized
patch
часткове оновлення статусу вказаного PodSchedulingContext
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}/status
Параметри
name (в шляху): string, обовʼязково
назва the PodSchedulingContext
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
201 (PodSchedulingContext): Created
401: Unauthorized
delete
видалення PodSchedulingContext
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PodSchedulingContext
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (PodSchedulingContext): OK
202 (PodSchedulingContext): Accepted
401: Unauthorized
deletecollection
видалення колекції PodSchedulingContext
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/podschedulingcontexts
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
16 - ResourceClaim v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceClaim
ResourceClaim описує запит на доступ до ресурсів у кластері, для використання робочими навантаженнями. Наприклад, якщо робоче навантаження потребує пристрою-акселератора з конкретними властивостями, ось як виражається цей запит. Розділ статусу відстежує, чи було задоволено цей запит і які саме ресурси були виділені.
Це альфа-тип і потребує увімкнення функціональної можливості DynamicResourceAllocation.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaim
metadata (ObjectMeta)
Стандартні метадані обʼєкта
spec (ResourceClaimSpec), обовʼязково
Spec описує, що запитується і як це налаштувати. Специфікація є незмінною.
status (ResourceClaimStatus)
Status описує, чи заявка готова до використання і що було виділено.
ResourceClaimSpec
ResourceClaimSpec визначає, що запитується в ResourceClaim і як це налаштувати.
controller (string)
Controller — це імʼя драйвера DRA, який призначений для обробки розподілу цієї заявки. Якщо поле порожнє, розподіл обробляється планувальником під час планування podʼа.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
devices (DeviceClaim)
Devices визначає як запитувати пристрої.
DeviceClaim визначає, як запитувати пристрої за допомогою ResourceClaim.
devices.config ([]DeviceClaimConfiguration)
Atomic: буде замінено під час злиття
Це поле містить конфігурацію для декількох потенційних драйверів, які можуть задовольнити запити у цій заявці. Воно ігнорується під час призначення заявки.
DeviceClaimConfiguration використовується для параметрів конфігурації у DeviceClaim.
devices.config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
devices.config.opaque.driver (string), обовʼязково
Драйвер використовується для визначення того, якому втулку kubelet потрібно передати ці конфігураційні параметри.
Політика допуску, надана розробником драйвера, може використовувати цей параметр, щоб вирішити, чи потрібно їх перевіряти.
Має бути субдоменом DNS і закінчуватися на DNS-домені, що належить постачальнику драйвера.
devices.config.opaque.parameters (RawExtension), обовʼязково
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// Зовнішній пакунок:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// Готовий JSON буде виглядати приблизно так:
{ "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
devices.constraints ([]DeviceConstraint)
Atomic: буде замінено під час злиття
Ці обмеження повинні задовольнятися набором пристроїв, які виділяються для заявки.
DeviceConstraint повинен мати рівно одне поле, крім Requests.
devices.constraints.matchAttribute (string)
MatchAttribute вимагає, щоб усі пристрої, про які йдеться, мали цей атрибуту, а його тип і значення були однаковими для всіх цих пристроїв.
Наприклад, якщо ви вказали "dra.example.com/numa" (гіпотетичний приклад!), то будуть обрані лише пристрої в одному й тому самому NUMA-вузлі. Пристрій, який не має цього атрибуту, не буде обраний. Усі пристрої повинні використовувати значення одного типу для цього атрибуту, оскільки це є частиною його специфікації, але якщо якийсь пристрій цього не робить, він також не буде обраний.
Має включати доменний кваліфікатор.
devices.constraints.requests ([]string)
Atomic: буде замінено під час злиття
Requests — це список з одного або більше запитів у цій заявці, які мають спільно задовольняти цю умову. Якщо запит виконується кількома пристроями, то всі пристрої повинні відповідати цій умові. Якщо це не вказано, ця умова застосовується до всіх запитів у заявці.
devices.requests ([]DeviceRequest)
Atomic: буде замінено під час злиття
Requests представляють індивідуальні запити на окремі пристрої, які мають бути задоволені. Якщо список порожній, то не потрібно виділяти жодних ресурсів.
DeviceRequest — це запит на пристрої, необхідні для заявки. Зазвичай це запит на один ресурс, такий як пристрій, але також може включати запит на кілька однакових пристроїв.
Поле DeviceClassName наразі є обов’язковим. Клієнти повинні перевірити, чи воно дійсно встановлене. Його відсутність свідчить про зміни, які ще не підтримуються клієнтом, і в такому випадку клієнт повинен відмовитися від обробки запиту.
devices.requests.deviceClassName (string), обовʼязково
DeviceClassName посилається на конкретний DeviceClass, який може визначати додаткові налаштування та селектори, що будуть успадковані цим запитом.
Клас є обов’язковим. Доступність класів залежить від кластера.
Адміністратори можуть використовувати це, щоб обмежити доступні для запитів пристрої, встановлюючи класи лише з селекторами для дозволених пристроїв. Якщо користувачі можуть вільно запитувати будь-що без обмежень, адміністратори можуть створити порожній DeviceClass для використання користувачами.
devices.requests.name (string), обовʼязково
Name може бути використане для посилання на цей запит у записі pod.spec.containers[].resources.claims та в умові заявки.
Має бути міткою DNS.
devices.requests.adminAccess (boolean)
AdminAccess вказує, що це заявка на адміністративний доступ до пристрою(їв). Заявки з AdminAccess очікується використовувати для моніторингу або інших сервісів управління пристроєм. Вони ігнорують усі звичайні заявки на пристрій щодо режимів доступу та будь-яких розподілів ресурсів.
devices.requests.allocationMode (string)
AllocationMode та пов’язані з ним поля визначають, як пристрої виділяються для виконання цього запиту. Підтримувані значення:
ExactCount: Цей запит на конкретну кількість пристроїв. Це значення використовується стандартно. Точна кількість вказується в полі
count
.All: Цей запит на всі пристрої, що відповідають умовам, у пулі. Виділення не вдасться, якщо деякі пристрої вже виділені, за винятком випадків, коли запитується adminAccess.
Якщо AllocationMode не вказано, стандатний режим — ExactCount. Якщо режим — ExactCount і кількість не вказана, стандартна кількість один. Будь-які інші запити повинні вказати це поле.
Можуть бути додані нові режими в майбутньому. Клієнти повинні відмовитися від обробки запитів із невідомими режимами.
devices.requests.count (int64)
Поле Count використовується лише тоді, коли режим підрахунку — "ExactCount". Має бути більше нуля. Якщо AllocationMode встановлено як ExactCount і це поле не вказано, стандартне значення — один.
devices.requests.selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Селектори визначають критерії, які має задовольнити конкретний пристрій, щоб він був розглянутий для цього запиту. Усі селектори повинні бути виконані, щоб пристрій був прийнятий до розгляду.
DeviceSelector повинен мати рівно одне встановлене поле.
devices.requests.selectors.cel (CELDeviceSelector)
CEL містить вираз CEL для вибору пристрою.
CELDeviceSelector містить CEL-вираз для вибору пристрою.
devices.requests.selectors.cel.expression (string), обовʼязково
Вираз є виразом CEL, який оцінює один пристрій. Він має оцінюватися як true, коли пристрій відповідає бажаним критеріям, і як false, коли не відповідає. Будь-який інший результат є помилкою і призводить до зупинки надання пристроїв.
Вхідні дані виразу — це обʼєкт з назвою "device", який має наступні властивості:
- driver (рядок): імʼя драйвера, який визначає цей пристрій.
- attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінюється як обʼєкт з усіма атрибутами, які були префіксовані "dra.example.com").
- capacity (map[string]object): обсяги пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який надає два атрибути з назвою "model" та "ext.example.com/family" і один обсяг з назвою "modules". Вхідні дані для цього виразу будуть мати такі поля:
device.driver device.attributes["dra.example.com"].model device.attributes["ext.example.com"].family device.capacity["dra.example.com"].modules
Поле device.driver можна використовувати для перевірки конкретного драйвера, або як загальну попередню умову (тобто ви хочете розглядати лише пристрої від цього драйвера), або як частину виразу з кількома умовами, який призначений для розгляду пристроїв з різних драйверів.
Тип значення кожного атрибута визначається визначенням пристрою, і користувачі, які пишуть ці вирази, повинні звертатися до документації для своїх конкретних драйверів. Тип значення кожного обсягу — Quantity.
Якщо невідомий префікс використовується для запиту в device.attributes або device.capacity, буде повернено порожній map. Будь-яке посилання на невідоме поле спричинить помилку оцінки і зупинку виділення.
Робочий вираз має перевіряти наявність атрибутів перед їх використанням.
Для зручності використання доступна функція cel.bind(), яка може бути використана для спрощення виразів, що звертаються до кількох атрибутів з одного домену. Наприклад:
cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
ResourceClaimStatus
ResourceClaimStatus відстежує, чи було виділено ресурс і яким був результат.
allocation (AllocationResult)
Allocation встановлюється після успішного розподілу заявки.
AllocationResult містить атрибути виділеного ресурсу.
allocation.controller (string)
controller — це імʼя драйвера DRA, який обробив виділення. Цей драйвер також відповідає за деалокацію заявки. Воно порожнє, коли заявку можна деалокувати без залучення драйвера.
Драйвер може виділяти пристрої, надані іншими драйверами, тому імʼя цього драйвера може відрізнятися від імен драйверів, зазначених у результатах.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
allocation.devices (DeviceAllocationResult)
Devices є результатом виділення пристроїів.
DeviceAllocationResult — результат виділення пристроїв.
allocation.devices.config ([]DeviceAllocationConfiguration)
Atomic: буде замінено під час злиття
Це поле є комбінацією всіх параметрів конфігурації заявки та класу. Драйвери можуть розрізняти ці параметри за допомогою прапорця.
Воно включає параметри конфігурації для драйверів, які не мають виділених пристроїв у результаті, оскільки драйвери самостійно визначають, які параметри конфігурації вони підтримують. Вони можуть мовчки ігнорувати невідомі параметри конфігурації.
DeviceAllocationConfiguration gets embedded in an AllocationResult.
allocation.devices.config.source (string), обовʼязково
Source вказує, чи конфігурація походить з класу і, отже, не є чимось, що звичайний користувач міг би встановити, чи з заявки.
allocation.devices.config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
allocation.devices.config.opaque.driver (string), обовʼязково
Драйвер використовується для визначення того, якому втулку kubelet потрібно передати ці конфігураційні параметри.
Політика допуску, надана розробником драйвера, може використовувати цей параметр, щоб вирішити, чи потрібно їх перевіряти.
Має бути субдоменом DNS і закінчуватися на DNS-домені, що належить постачальнику драйвера.
allocation.devices.config.opaque.parameters (RawExtension), обовʼязково
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// Зовнішній пакунок:
type MyAPIObject struct { runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` } type PluginA struct { AOption string `json:"aOption"` }
// Готовий JSON буде виглядати приблизно так:
{ "kind":"MyAPIObject", "apiVersion":"v1", "myPlugin": { "kind":"PluginA", "aOption":"foo", }, }
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
allocation.devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
allocation.devices.results ([]DeviceRequestAllocationResult)
Atomic: буде замінено під час злиття
Results — перелік віділених пристроїв.
DeviceRequestAllocationResult містить результат розподілу для одного запиту.
allocation.devices.results.device (string), обовʼязково
Device посилається на один екземпляр пристрою за його імʼям в ресурсному пулі драйвера. Має бути міткою DNS.
allocation.devices.results.driver (string), обовʼязково
Driver вказує імʼя драйвера DRA, чий втулок kubelet слід викликати для обробки виділення, коли заявка потрібна на вузлі.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера.
allocation.devices.results.pool (string), обовʼязково
Це імʼя разом з імʼям драйвера та полем імені пристрою ідентифікує, який пристрій був виділений (
\<імʼя драйвера>/\<імʼя пулу>/\<імʼя пристрою>
).Не повинно перевищувати 253 символи і може містити один або більше піддоменів DNS, розділених косими рисками.
allocation.devices.results.request (string), обовʼязково
Request — це імʼя запиту в заявці, який спричинив виділення цього пристрою. Для одного запиту може бути виділено кілька пристроїв.
allocation.nodeSelector (NodeSelector)
NodeSelector визначає, де доступні виділені ресурси. Якщо не встановлено, ресурси доступні скрізь.
Селектор вузлів представляє об'єднання результатів одного або кількох запитів міток над набором вузлів; тобто, він представляє логічне OR селекторів, які представлені термінами селектора вузлів.
allocation.nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm), обовʼязково
Atomic: буде замінено під час злиття
Обов’язкове поле. Список термінів селектора вузлів. Термінів застосовується логічне OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
allocation.nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за мітками вузлів.
allocation.nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог селектора вузлів за полями вузлів.
deallocationRequested (boolean)
Вказує на те, що заявку потрібно деалокувати. Поки це поле встановлене, нові споживачі не можуть бути додані до ReservedFor.
Використовується лише у випадках, коли заявку потрібно деалокувати за допомогою драйвера DRA. Цей драйвер повинен деалокувати заявку та скинути це поле разом із очищенням поля Allocation.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
reservedFor ([]ResourceClaimConsumerReference)
Patch strategy: злиття за ключем
uid
Map: унікальні значення ключа uid будуть збережені під час злиття
ReservedFor вказує, які сутності в даний момент можуть використовувати заявку. Pod, який посилається на ResourceClaim, що не зарезервована для цього Podʼа, не буде запущений. Заявка, яка використовується або може бути використана, оскільки вона зарезервована, не повинна бути деалокована.
У кластері з кількома екземплярами планувальника два podʼи можуть бути заплановані одночасно різними планувальниками. Коли вони посилаються на один і той же ResourceClaim, який вже досяг максимального числа споживачів, лише один pod може бути запланований.
Обидва планувальники намагаються додати свій pod до поля claim.status.reservedFor, але лише оновлення, яке досягає API-сервера першим, зберігається. Інше оновлення зазнає помилки, і планувальник, який його надіслав, знає, що потрібно повернути pod у чергу, чекаючи, поки ResourceClaim знову стане доступним.
Може бути не більше 32 таких резервувань. Це число може бути збільшено в майбутньому, але не зменшено.
ResourceClaimConsumerReference містить достатньо інформації, щоб знайти споживача ResourceClaim. Користувач має бути ресурсом в тому ж просторі імен, що і ResourceClaim.
reservedFor.name (string), обовʼязково
Name — це імʼя ресурсу, на який посилаються.
reservedFor.resource (string), обовʼязково
Resource — це тип ресурсу, на який посилаються, наприклад, "pods".
reservedFor.uid (string), обовʼязково
UID ідентифікує саме одну інкарнацію ресурсу.
reservedFor.apiGroup (string)
APIGroup — це група для ресурсу, на який посилаються. Вона порожня для основного API. Це відповідає групі в APIVersion, яка використовується при створенні ресурсів.
ResourceClaimList
ResourceClaimList — це колекція заявок.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimList
metadata (ListMeta)
Стандартні метадані списку
items ([]ResourceClaim), обовʼязково
Items — це список вимог на ресурси.
Операції
get
отримати вказаний ResourceClaim
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
401: Unauthorized
get
отримати статус вказаного ResourceClaim
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceClaim
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceClaimList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceClaim
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/resourceclaims
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceClaimList): OK
401: Unauthorized
create
створення ResourceClaim
HTTP запит
POST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
Параметри
namespace (в шляху): string, обовʼязково
body: ResourceClaim, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
201 (ResourceClaim): Created
202 (ResourceClaim): Accepted
401: Unauthorized
update
заміна вказаного ResourceClaim
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
body: ResourceClaim, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
update
заміна статусу вказаного ResourceClaim
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
body: ResourceClaim, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
patch
часткове оновлення вказаного ResourceClaim
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
patch
часткове оновлення статусу вказаного ResourceClaim
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceClaim): OK
201 (ResourceClaim): Created
401: Unauthorized
delete
видалення ResourceClaim
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims/{name}
Параметри
name (в шляху): string, обовʼязково
name of the ResourceClaim
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ResourceClaim): OK
202 (ResourceClaim): Accepted
401: Unauthorized
deletecollection
видалення of ResourceClaim
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaims
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
17 - ResourceClaimTemplate v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceClaimTemplate
ResourceClaimTemplate використовується для створення обʼєктів ResourceClaim.
Це альфа-тип і вимагає увімкнення функціональної можливості DynamicResourceAllocation.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimTemplate
metadata (ObjectMeta)
Стандартні метадані обʼєкта.
spec (ResourceClaimTemplateSpec), обовʼязково
Описує ResourceClaim, який буде створений.
ResourceClaimTemplateSpec
ResourceClaimTemplateSpec містить метадані та поля для ResourceClaim.
spec (ResourceClaimSpec), обовʼязково
Специфікація для ResourceClaim. Весь вміст копіюється без змін в ResourceClaim, який створюється з цього шаблону. Ті ж самі поля, що й в ResourceClaim, є дійсними тут.
metadata (ObjectMeta)
ObjectMeta може містити мітки та анотації, які будуть скопійовані до PVC при створенні його. Інші поля не дозволені і будуть відхилені під час перевірки на валідність.
ResourceClaimTemplateList
ResourceClaimTemplateList є колекцією шаблонів заявок.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceClaimTemplateList
metadata (ListMeta)
Стандартні метадані списку.
items ([]ResourceClaimTemplate), обовʼязково
Список шаблонів заявок на ресурси.
Операції
get
отримати вказаний ResourceClaimTemplate
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
Назва шаблону ResourceClaimTemplate
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (ResourceClaimTemplate): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceClaimTemplate
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceClaimTemplateList): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceClaimTemplate
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/resourceclaimtemplates
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceClaimTemplateList): OK
401: Unauthorized
create
створення ResourceClaimTemplate
HTTP запит
POST /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
Параметри
namespace (в шляху): string, обовʼязково
body: ResourceClaimTemplate, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
202 (ResourceClaimTemplate): Accepted
401: Unauthorized
update
заміна вказаного ResourceClaimTemplate
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
Назва шаблону ResourceClaimTemplate
namespace (в шляху): string, обовʼязково
body: ResourceClaimTemplate, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
401: Unauthorized
patch
часткове оновлення вказаного ResourceClaimTemplate
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
Назва шаблону ResourceClaimTemplate
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceClaimTemplate): OK
201 (ResourceClaimTemplate): Created
401: Unauthorized
delete
видалення ResourceClaimTemplate
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates/{name}
Параметри
name (в шляху): string, обовʼязково
Назва шаблону ResourceClaimTemplate
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ResourceClaimTemplate): OK
202 (ResourceClaimTemplate): Accepted
401: Unauthorized
deletecollection
видалення колекції ResourceClaimTemplate
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/namespaces/{namespace}/resourceclaimtemplates
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
18 - ResourceSlice v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceSlice
ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, що управляються спільним драйвером. Пул може охоплювати більше ніж один ResourceSlice, і точна кількість ResourceSlices, що складають пул, визначається драйвером.
Наразі підтримуються лише пристрої з атрибутами та ємностями (capacities). Кожен пристрій у певному пулі, незалежно від кількості ResourceSlices, повинен мати унікальне імʼя. ResourceSlice, в якому пристрій публікується, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.
Щоразу, коли драйверу потрібно оновити пул, він інкрементує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером і новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління та ігнорувати всі інші.
При виділенні всіх ресурсів в пулі, що відповідають певним критеріям, або при пошуку найкращого рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включену в кожен ResourceSlice), щоб визначити, чи є його погляд на пул повним, і, якщо ні, чекати, поки драйвер завершить оновлення пулу.
Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузлів для вказівки, де пристрої доступні.
Це альфа-тип і вимагає активації функціональної можливості DynamicResourceAllocation.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceSlice
metadata (ObjectMeta)
Стандартні мета дані обʼєкта
spec (ResourceSliceSpec), обовʼязково
Містить інформацію, опубліковану драйвером.
Зміна специфікації автоматично інкрементує номер metadata.generation.
ResourceSliceSpec
ResourceSliceSpec містить інформацію, опубліковану драйвером в одному ResourceSlice.
driver (string), обовʼязково
Driver ідентифікує драйвер DRA, який надає інформацію про ємність. Можна використовувати селектор полів для переліку лише об'єктів ResourceSlice з певним імʼям драйвера.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера. Це поле є незмінним.
pool (ResourcePool), обовʼязково
Pool описує пул, до якого належить цей ResourceSlice.
ResourcePool описує пул, до якого належать ResourceSlices.
pool.generation (int64), обовʼязково
Generation відстежує зміни в пулі з часом. Щоразу, коли драйвер змінює щось в одному або кількох ресурсах у пулі, він повинен змінити покоління у всіх ResourceSlices, які є частиною цього пулу. Споживачі ResourceSlices повинні враховувати лише ресурси з пулу з найвищим номером покоління. Покоління може бути скинуто драйверами, що має бути прийнятно для споживачів, за умови, що всі ResourceSlices у пулі оновлені, щоб відповідати новому поколінню або видалені.
Поєднаний з ResourceSliceCount, цей механізм дозволяє споживачам виявляти пули, які складаються з кількох ResourceSlices і знаходяться в неповному стані.
pool.name (string), обовʼязково
Name використовується для ідентифікації пулу. Для локальних на вузлі пристроїв це часто є імʼя вузла, але це не є обовʼязковим.
Не повинно перевищувати 253 символи і повинно складатися з одного або кількох піддоменів DNS, розділених косими рисками. Це поле є незмінним.
pool.resourceSliceCount (int64), обовʼязково
ResourceSliceCount — це загальна кількість ResourceSlices у пулі на цьому номері покоління. Має бути більше нуля.
Споживачі можуть використовувати це для перевірки, чи вони бачили всі ResourceSlices, що належать одному й тому ж пулу.
allNodes (boolean)
AllNodes вказує на те, що всі вузли мають доступ до ресурсів у пулі.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
devices ([]Device)
Atomic: буде замінено під час злиття
Devices перераховує деякі або всі пристрої в цьому пулі.
Не повинно бути більше ніж 128 записів.
Device представляє один індивідуальний апаратний екземпляр, який може бути вибраний на основі його атрибутів. Окрім імені, має бути встановлено точно одне поле.
devices.name (string), обовʼязково
Name є унікальним ідентифікатором серед усіх пристроїв, які управляються драйвером у пулі. Має бути піддоменом DNS.
devices.basic (BasicDevice)
Basic визначає один екземпляр пристрою.
BasicDevice визначає один екземпляр пристрою.
devices.basic.attributes (map[string]DeviceAttribute)
Attributes визначає набір атрибутів для цього пристрою. Імʼя кожного атрибута повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
DeviceAttribute має бути встановлено точно одне поле.
devices.basic.attributes.bool (boolean)
BoolValue є значенням true/false.
devices.basic.attributes.int (int64)
IntValue є числом.
devices.basic.attributes.string (string)
StringValue є рядком. Не повинно бути довше 64 символів.
devices.basic.attributes.version (string)
VersionValue є семантичною версією відповідно до специфікації semver.org 2.0.0. Не повинна перевищувати 64 символи в довжину.
devices.basic.capacity (map[string]Quantity)
Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
nodeName (string)
NodeName ідентифікує вузол, який надає ресурси в цьому пулі. Селектор полів можна використовувати для переліку лише обʼєктів ResourceSlice, що належать певному вузлу.
Це поле може використовуватися для обмеження доступу з вузлів до ResourceSlices з тим же іменем вузла. Воно також вказує автомасштабувальникам, що додавання нових вузлів того ж типу, що й старий вузол, може також зробити нові ресурси доступними.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes. Це поле є незмінним.
nodeSelector (NodeSelector)
NodeSelector визначає, які вузли мають доступ до ресурсів у пулі, коли цей пул не обмежений до одного вузла.
Має бути використано точно один термін.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів міток по набору вузлів; тобто, він представляє логічну операцію OR селекторів, представлених термінами селектора вузлів.
nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm), обовʼязково
Atomic: буде замінено під час злиття
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузлів за мітками вузлів.
nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузла за полями вузла.
ResourceSliceList
ResourceSliceList — колекція класів ResourceSlices.
apiVersion: resource.k8s.io/v1alpha3
kind: ResourceSliceList
items ([]ResourceSlice), обовʼязково
Items is the list of resource ResourceSlices.
metadata (ListMeta)
Стандартні метадані списку
Операції
get
отримати вказаний ResourceSlice
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
pretty (в запиті): string
Відповідь
200 (ResourceSlice): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceSlice
HTTP запит
GET /apis/resource.k8s.io/v1alpha3/resourceslices
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (ResourceSliceList): OK
401: Unauthorized
create
створення ResourceSlice
HTTP запит
POST /apis/resource.k8s.io/v1alpha3/resourceslices
Параметри
body: ResourceSlice, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceSlice): OK
201 (ResourceSlice): Created
202 (ResourceSlice): Accepted
401: Unauthorized
update
заміна вказаного ResourceSlice
HTTP запит
PUT /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
body: ResourceSlice, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (ResourceSlice): OK
201 (ResourceSlice): Created
401: Unauthorized
patch
часткове оновлення вказаного ResourceSlice
HTTP запит
PATCH /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (ResourceSlice): OK
201 (ResourceSlice): Created
401: Unauthorized
delete
видалення ResourceSlice
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ResourceSlice): OK
202 (ResourceSlice): Accepted
401: Unauthorized
deletecollection
видалення колекції ResourceSlice
HTTP запит
DELETE /apis/resource.k8s.io/v1alpha3/resourceslices
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized