ResourceSlice

ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, керованих спільним драйвером. Пул може охоплювати більше одного ResourceSlice, і точно визначити, скільки ResourceSlice складають пул, визначає драйвер.

На даний момент єдині підтримувані ресурси — це пристрої з атрибутами та ємностями (capacities). Кожен пристрій у даному пулі, незалежно від того, скільки ResourceSlice, повинен мати унікальне імʼя. ResourceSlice, у якому публікується пристрій, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.

Щоразу, коли драйвер потребує оновлення пулу, він збільшує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером та новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління і ігнорувати всі інші.

При виділенні всіх ресурсів у пулі, що відповідають певним критеріям, або при пошуку найкращого рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включених у кожен ResourceSlice), щоб визначити, чи є його уявлення про пул повним, і якщо ні, слід чекати, поки драйвер завершить оновлення пулу.

Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузла, щоб вказати, де доступні пристрої.

apiVersion: resource.k8s.io/v1

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

ResourceSlice

ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, керованих спільним драйвером. Пул може охоплювати більше одного ResourceSlice, і точно визначити, скільки ResourceSlices складають пул, визначає драйвер.

На даний момент єдині підтримувані ресурси — це пристрої з атрибутами та ємностями (capacities). Кожен пристрій у даному пулі, незалежно від того, скільки ResourceSlices, повинен мати унікальне імʼя. ResourceSlice, у якому публікується пристрій, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.

Щоразу, коли драйвер потребує оновлення пулу, він збільшує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером та новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління і ігнорувати всі інші.

Коли виділяються всі ресурси в пулі, що відповідають певним критеріям, або коли шукається найкраще рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включених у кожен ResourceSlice), щоб визначити, чи є його уявлення про пул повним, і якщо ні, слід чекати, поки драйвер завершить оновлення пулу.

Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузла, щоб вказати, де доступні пристрої.


ПолеОпис
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
ObjectMeta
Стандартні метадані обʼєкта
spec *
ResourceSliceSpec
Містить інформацію, опубліковану драйвером. Зміна spec автоматично збільшує номер metadata.generation.

ResourceSliceSpec

ResourceSliceSpec містить інформацію, опубліковану драйвером в одному ResourceSlice.


ПолеОпис
allNodes
boolean

AllNodes вказує, що всі вузли мають доступ до ресурсів у пулі.

Тільки один з NodeName, NodeSelector, AllNodes та PerDeviceNodeSelection повинен бути встановлений.

devices
Device array

Devices перелічує деякі або всі пристрої в цьому пулі.

Не повинно бути більше 128 записів. Якщо будь-який пристрій використовує taints або споживає лічильники, обмеження становить 64.

Тільки один з Devices та SharedCounters може бути встановлений у ResourceSlice.

driver *
string

Driver визнає DRA драйвер, який надає інформацію про ємність. Можна використовувати селектор полів, щоб перелічити лише обʼєкти ResourceSlice з певним імʼям драйвера.

Повинно бути DNS-піддоменом і закінчуватися DNS-доменом, що належить постачальнику драйвера. Повинно використовувати лише малі літери. Це поле є незмінним.

nodeName
string

NodeName вказує вузол, який надає ресурси в цьому пулі. Можна використовувати селектор полів, щоб перелічити лише обʼєкти ResourceSlice, що належать певному вузлу.

Це поле можна використовувати для обмеження доступу вузлів до ResourceSlices з однаковим імʼям вузла. Воно також вказує автомасштабувальникам, що додавання нових вузлів того ж типу, що й деякі старі вузли, може також зробити доступними нові ресурси.

Тільки один з NodeName, NodeSelector, AllNodes та PerDeviceNodeSelection повинен бути встановлений. Це поле є незмінним.

nodeSelector
NodeSelector

NodeSelector визначає, які вузли мають доступ до ресурсів у пулі, коли цей пул не обмежений одним вузлом.

Має тільки один термін.

Тільки один з NodeName, NodeSelector, AllNodes та PerDeviceNodeSelection повинен бути встановлений.

partitionTypeAttribute
string
PartitionTypeAttribute називає атрибут пристрою строкового типу (за повним імʼям, наприклад "gpu.example.com/profile"), значення якого позначає кожен пристрій його типом розділу, наприклад "Full" або "Half" для GPU у стилі MIG. Коли встановлено, кожен пристрій, який можна розділити у цьому slice, повинен нести цей атрибут, а пристрої, що поділяють однакове значення, повинні поділяти однакову вартість ConsumesCounters.
perDeviceNodeSelection
boolean

PerDeviceNodeSelection визначає, чи доступ вузлів до ресурсів у пулі встановлюється на рівні ResourceSlice або на кожному пристрої. Якщо встановлено значення true, кожен пристрій, визначений у ResourceSlice, повинен вказати це окремо.

Тільки один з NodeName, NodeSelector, AllNodes та PerDeviceNodeSelection повинен бути встановлений.

pool *
ResourcePool
Pool описує пул, до якого належить цей ResourceSlice.
sharedCounters
CounterSet array

SharedCounters визначає список наборів лічильників, кожен з яких має імʼя та список доступних лічильників.

Імена наборів лічильників повинні бути унікальними в ResourcePool. Тільки один з Devices та SharedCounters може бути встановлений у ResourceSlice. Максимальна кількість наборів лічильників становить 8.

skipNodeOperations
string array
SkipNodeOperations перелічує локальні для вузла операції над ресурсами (виклики gRPC), які будуть пропущені для пристроїв у цьому slice під час визначення, чи потрібні операції на вузлі. Якщо всі виділені пристрої для драйвера у заявці пропускають операцію, цей виклик gRPC буде пропущено. Дійсні значення:
  • "NodePrepareResources": виклики gRPC NodePrepareResources пропускаються. Це значення не можна вказати, якщо "NodeUnprepareResources" також не вказано (або не вказано "*").
  • "NodeUnprepareResources": виклики gRPC NodeUnprepareResources пропускаються.
  • "*": всі локальні для вузла операції над ресурсами пропускаються.
Інші значення можуть бути додані в майбутньому. Kubelet повинен ігнорувати невідомі значення.

ResourceSliceList

ResourceSliceList — це колекція обʼєктів ResourceSlice.


ПолеОпис
apiVersion
string
APIVersion визначає версію схеми цього представлення обʼєкта. Сервери повинні конвертувати розпізнані схеми до останнього внутрішнього значення і можуть відхиляти нерозпізнані значення. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
items *
ResourceSlice array
Items визначає список ресурсів ResourceSlices.
kind
string
Kind визначає тип REST-ресурсу, який представляє цей обʼєкт. Сервери можуть визначати це з точки доступу, до якої клієнт надсилає запити. Не може бути оновлено. У CamelCase. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
metadata
ListMeta
Стандартні метадані списку

CapacityRequestPolicy

CapacityRequestPolicy визначає, як запити споживають ємність пристрою.

Не можна встановлювати більше одного ValidRequestValues.


ПолеОпис
default
Quantity
Default визначає, скільки цієї ємності споживається запитом, який не містить запису для неї в Capacity DeviceRequest.
validRange
CapacityRequestPolicyRange

ValidRange визначає допустимий діапазон значень кількості в запитах на споживання.

Якщо це поле встановлено, Default повинен бути визначений і він повинен потрапляти в межі визначеного ValidRange.

Якщо запитана кількість не потрапляє в межі визначеного діапазону, запит порушує політику, і цей пристрій не може бути виділений.

Якщо запит не містить цього запису про ємність, використовується стандартне значення.

validValues
Quantity array

ValidValues визначає набір допустимих значень кількості в запитах на споживання.

Не може містити більше 10 записів. Повинно бути відсортовано за зростанням.

Якщо це поле встановлено, Default повинен бути визначений і він повинен входити до списку ValidValues.

Якщо запитана кількість не відповідає жодному допустимому значенню, але менша за деякі допустимі значення, планувальник обчислює найменше допустиме значення, яке більше або дорівнює запиту. Тобто: min(ceil(requestedValue) ∈ validValues), де requestedValue ≤ max(validValues).

Якщо запитана кількість перевищує всі допустимі значення, запит порушує політику, і цей пристрій не може бути виділений.

CapacityRequestPolicyRange

CapacityRequestPolicyRange визначає допустимий діапазон значень споживаної ємності.

Якщо функційну можливість DRAFractionalCapacityRange увімкнено і принаймні одне з Min, Max або Step є дробовою величиною (тобто її значення не є цілим числом), замість цього використовується арифметика з мілі-одиницями, що підтримує значення з точністю до 3 знаків після коми (наприклад, 100m = 0.1). Найбільше підтримуване значення тоді в 1000 разів менше порівняно з використанням 64-бітових цілих чисел. В іншому випадку всі порівняння використовують 64-бітову цілочисельну арифметику через resource.Quantity.Value().

  • Якщо запитана кількість менша за Min, вона округлюється до значення Min.
  • Якщо Step встановлено, а запитана кількість знаходиться між Min і Max, але не відповідає Step, вона буде округлена до наступного значення, рівного Min + (n * Step).
  • Якщо Step не встановлено, запитана кількість використовується як є, якщо вона знаходиться в діапазоні від Min до Max (якщо встановлено).
  • Якщо запитана або округлена кількість перевищує Max (якщо встановлено), запит не відповідає політиці, і пристрій не може бути виділений.

ПолеОпис
max
Quantity

Max визначає верхню межу ємності, яку можна запитати.

Max повинен бути меншим або рівним значенню ємності. Min і requestPolicy.default повинні бути меншими або рівними максимуму.

min *
Quantity

Min визначає мінімальну ємність, дозволену для запиту на споживання.

Min повинен бути більшим або рівним нулю та меншим або рівним значенню ємності. requestPolicy.default повинен бути більшим або рівним мінімуму.

step
Quantity

Step визначає крок між допустимими значеннями ємності в межах діапазону.

Max (якщо встановлено) та requestPolicy.default повинні бути кратними Step. Min + Step повинно бути меншим або рівним значенню ємності.

Counter

Counter описує кількість, повʼязану з пристроєм.


ПолеОпис
value *
Quantity
Value визначає, скільки певного лічильника пристрою доступно.

CounterSet

CounterSet визначає іменований набір лічильників, які доступні для використання пристроями, визначеними в ResourcePool.

Лічильники самі по собі не можуть бути виділені, але можуть бути посиланням для пристроїв. Коли пристрій виділяється, частина лічильників, яку він використовує, більше не буде доступна для використання іншими пристроями.


ПолеОпис
counters *
object

Counters визначає набір лічильників для цього CounterSet.

Імʼя кожного лічильника повинно бути унікальним у цьому наборі та відповідати DNS-мітці. Максимальна кількість лічильників — 32.

name *
string

Name визначає імʼя набору лічильників.

Воно повинно бути DNS-міткою.

Device

Device представляє один окремий апаратний екземпляр, який можна вибрати на основі його атрибутів. Крім імені, має бути встановлено тільки одне поле.


ПолеОпис
allNodes
boolean

AllNodes вказує, що всі вузли мають доступ до пристрою.

Має бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Можна встановити не більше одного з NodeName, NodeSelector та AllNodes.

allowMultipleAllocations
boolean

AllowMultipleAllocations вказує, чи дозволено виділяти пристрій для кількох DeviceRequests.

Якщо AllowMultipleAllocations встановлено в true, пристрій може бути виділений більше одного разу, і вся його ємність буде споживана, незалежно від того, чи визначено requestPolicy чи ні.

attributes
object

Attributes визначає набір атрибутів для цього пристрою.

Імʼя кожного атрибуту повинно бути унікальним у цьому наборі.

Максимальна кількість атрибутів та ємностей разом становить 32.

bindingConditions
string array

BindingConditions визначає умови для продовження привʼязки.

Всі ці умови повинні бути встановлені в умовах стану кожного пристрою зі значенням True, щоб продовжити привʼязку пода до вузла під час планування пода.

Максимальна кількість умов привʼязки становить 4.

Умови повинні бути дійсним рядком типу умови.

Це бета-поле і вимагає увімкнення функційних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.

bindingFailureConditions
string array

BindingFailureConditions визначає умови для невдачі привʼязки. Вони можуть бути встановлені в умовах стану кожного пристрою. Якщо будь-яка з них встановлена в "True", сталася невдача привʼязки.

Максимальна кількість умов невдачі привʼязки становить 4.

Умови повинні бути дійсним рядком типу умови.

Це бета-поле і вимагає увімкнення функційних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.

bindsToNode
boolean

BindsToNode показує, чи використання виділення, що включає цей пристрій, має бути обмежене саме тим вузлом, який був обраний під час розподілу заявки. Якщо встановлено в true, планувальник встановить ResourceClaim.Status.Allocation.NodeSelector, щоб відповідати вузлу, де було зроблено виділення.

Це бета-поле і вимагає увімкнення функційних можливостей DRADeviceBindingConditions та DRAResourceClaimDeviceStatus.

capacity
object

Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності повинно бути унікальним у цьому наборі.

Максимальна кількість атрибутів і ємностей разом становить 32.

consumesCounters
DeviceCounterConsumption array

ConsumesCounters визначає список посилань на sharedCounters та набір лічильників, які пристрій буде споживати з цих наборів лічильників.

Може бути лише один запис на counterSet. Максимальна кількість споживань лічильників пристрою на пристрій становить 2.

name *
string
Name є унікальним ідентифікатором серед усіх пристроїв, керованих драйвером у пулі. Він повинен бути міткою DNS.
nodeAllocatableResources
object
NodeAllocatableResources визначає зіставлення ресурсів вузла, якими керує драйвер DRA, що надає цей пристрій. Це включає ресурси, які наразі повідомляються у v1.Node status.allocatable, але не є розширеними ресурсами (див. https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#extended-resources). Прикладами є "cpu", "memory", "ephemeral-storage" та hugepages. Крім стандартних запитів, зроблених через Pod spec, ці ресурси також можуть бути запитані через заявки та виділені драйвером DRA. Наприклад, драйвер CPU DRA може виділяти ексклюзивні CPU або допоміжні залежності памʼяті вузла для прискорювального пристрою. Ключами цієї мапи є імена доступних для виділення ресурсів вузла (наприклад, "cpu", "memory"). Імена розширених ресурсів не дозволяються як ключі.
nodeName
string

NodeName визначає вузол, де доступний пристрій.

Може бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Може бути встановлено не більше одного з NodeName, NodeSelector та AllNodes.

nodeSelector
NodeSelector

NodeSelector визначає вузли, де доступний пристрій.

Має використовуватися тільки один термін.

Може бути встановлено лише якщо Spec.PerDeviceNodeSelection встановлено в true. Може бути встановлено не більше одного з NodeName, NodeSelector та AllNodes.

taints
DeviceTaint array

Якщо вказано, то це taint, визначені драйвером.

Максимальна кількість taints становить 16. Якщо taints встановлено для будь-якого пристрою в ResourceSlice, тоді максимальна кількість дозволених пристроїв на ResourceSlice становить 64 замість 128.

Це бета-поле і вимагає увімкнення функціональної можливості DRADeviceTaints.

DeviceAttribute

DeviceAttribute має мати встановлене тільки одне поле.


ПолеОпис
bool
boolean
BoolValue є значенням true/false.
bools
boolean array
BoolValues є непорожнім списком значень true/false.
int
integer
IntValue є числом.
ints
integer array

IntValues є непорожнім списком чисел.

Це альфа-поле і вимагає увімкнення функціональної можливості DRAListTypeAttributes.

string
string
StringValue є рядком. Не повинен перевищувати 64 символи.
strings
string array

StringValues є непорожнім списком рядків. Кожен рядок не повинен перевищувати 64 символи.

Це альфа-поле і вимагає увімкнення функціональної можливості DRAListTypeAttributes.

version
string
VersionValue є семантичним версіонуванням відповідно до специфікації semver.org 2.0.0. Не має перевищувати 64 символи.
versions
string array

VersionValues є непорожнім списком семантичних версій відповідно до специфікації semver.org 2.0.0. Кожен рядок версії не повинен перевищувати 64 символи.

Це альфа-поле і вимагає увімкнення функціональної можливості DRAListTypeAttributes.

DeviceCapacity

DeviceCapacity описує кількість, повʼязану з пристроєм.


ПолеОпис
requestPolicy
CapacityRequestPolicy

RequestPolicy визначає, як ця DeviceCapacity повинна споживатися, коли пристрій дозволено ділити між кількома розподілами.

Пристрій повинен мати allowMultipleAllocations встановлено в true, щоб встановити requestPolicy.

Якщо не встановлено, запити на ємність не обмежені: запити можуть споживати будь-яку кількість ємності, доки загальна спожита кількість у всіх виділеннях не перевищує визначену ємність пристрою. Якщо request також не встановлено, за замовчуванням використовується повна ємність.

value *
Quantity

Value визначає, скільки певної ємності має пристрій.

Це поле відображає фіксовану загальну ємність і не змінюється. Спожита кількість відстежується окремо планувальником і не впливає на це значення.

DeviceCounterConsumption

DeviceCounterConsumption визначає набір лічильників, які пристрій буде споживати з CounterSet.


ПолеОпис
compatibilityGroups
string array
CompatibilityGroups — це список непрозорих назв груп для цього споживання набору лічильників. Пристрої, які споживають лічильники з одного набору лічильників, можуть бути виділені одночасно («спільно виділені»), лише якщо всі вони поділяють принаймні одну спільну групу: перетин CompatibilityGroups усіх спільно виділених пристроїв у цьому наборі лічильників повинен бути непорожнім. Пристрої, які споживають із різних наборів лічильників, ніколи не порівнюються через це поле. Невстановлене поле, явний nil та порожній список еквівалентні і означають «без груп»: такий пристрій може бути спільно виділений лише з сусідніми пристроями в тому самому наборі лічильників, які також не мають груп, і ніколи не може бути спільно виділений з пристроєм, який оголошує одну або більше груп. Назви груп є непрозорими та значущими лише в межах пулу драйвера, що публікує. Максимальна кількість груп становить 2, а назви мають бути унікальними.
counterSet *
string
CounterSet є назвою набору, з якого будуть споживатися визначені лічильники.
counters *
object

Counters визначає лічильники, які будуть споживатися пристроєм.

Максимальна кількість лічильників становить 32.

NodeAllocatableMapping

NodeAllocatableMapping визначає, як розподіл DRA безпосередньо перетворюється на кількість доступного для виділення ресурсу вузла. Зіставлення може бути отримано або з кількості виділених пристроїв (через deviceMultiplier), або з конкретно спожитої ємності (через capacityKey та capacityMultiplier). Ці варіанти є взаємовиключними. Kubelet додає цю зіставлену кількість ресурсу із заявки і до запитів, і до лімітів у cgroup рівня пода, а до лімітів — у cgroup рівня контейнера для кожного контейнера, що посилається на заявку.


ПолеОпис
capacityKey
string
CapacityKey посилається на назву ємності, визначену як ключ у мапі spec.devices[*].capacity. Коли це поле встановлено, значення, повʼязане з цим ключем у мапі status.allocation.devices.results[*].consumedCapacity (для конкретного розподілу заявки), визначає базову кількість для доступного для виділення ресурсу вузла. capacityMultiplier також має бути встановлений і множиться на базову кількість. Наприклад, якщо spec.devices[*].capacity має запис "dra.example.com/memory": "128Gi", і це поле встановлено на "dra.example.com/memory", тоді для розподілу заявки, яке споживає { "dra.example.com/memory": "4Gi" }, базова кількість для зіставлення доступного для виділення ресурсу вузла буде "4Gi". Остаточна кількість доступного для виділення ресурсу вузла становить consumedCapacity[capacityKey] * capacityMultiplier.
capacityMultiplier
Quantity
CapacityMultiplier використовується як множник для спожитої виділеної ємності. Він дійсний лише якщо встановлено capacityKey. Остаточна кількість доступного для виділення ресурсу вузла становить consumedCapacity[capacityKey] * capacityMultiplier. Наприклад, якщо споживається ємність пристрою "dra.example.com/cores", і кожне "ядро" забезпечує 2 "cpu", зіставлення буде: {ResourceName: "cpu", capacityKey: "dra.example.com/cores", capacityMultiplier: "2"}. Якщо заявка споживає 8 "dra.example.com/cores", відбиток CPU становить 8 * 2 = 16.
deviceMultiplier
Quantity
DeviceMultiplier використовується як множник для кількості виділених пристроїв у заявці. Остаточна кількість доступного для виділення ресурсу вузла становить deviceCount * deviceMultiplier. Наприклад, DRA-драйвер, який представляє кожен кеш-комплекс (CCX) як пристрій, матиме {ResourceName: "cpu", deviceMultiplier: "8"} у своєму nodeAllocatableResources. Якщо 2 пристрої (CCX) виділено для заявки, 2 * 8 = 16 CPU вважатимуться виділеними. Він дійсний лише тоді, коли capacityKey та capacityMultiplier не встановлені.

NodeAllocatableOverhead

NodeAllocatableOverhead визначає додаткові витрати на ресурси, що виникають під час виділення пристрою. Ці витрати можна вказати як фіксовану вартість на кожен pod, що посилається на заявку, як змінну вартість на кожне посилання на контейнер або як обидва варіанти. Kubelet враховує ці витрати, додаючи їх до cgroups як на рівні pod, так і на рівні контейнера для контейнерів, що посилаються на пристрій.


ПолеОпис
perContainer
Quantity
PerContainer застосовується на кожне посилання контейнера на заявку. Це моделює накладні витрати, що масштабуються лінійно з кількістю контейнерів, які активно використовують пристрій. Коли вказані і PerPod, і PerContainer, загальні накладні витрати, виділені для кожного пода, що посилається на заявку, обчислюються як: Quantity = PerPod + (PerContainer * NumReferences) Kubelet враховує ці накладні витрати в cgroup:
  • cgroup рівня пода (запити та ліміти): Kubelet додає PerPod + (PerContainer * NumReferences).
  • cgroup рівня контейнера (лише ліміти): Kubelet додає PerPod + PerContainer для кожного контейнера, що посилається на заявку. Це дозволяє будь-якому окремому контейнеру отримати доступ до накладних витрат рівня пода, тоді як батьківська cgroup обмежує загальне використання, щоб врахувати PerPod рівно один раз.
perPod
Quantity
PerPod — це накладні витрати, що застосовуються один раз на под, який посилається на заявку на цьому вузлі. Це фіксовані накладні витрати, що виникають для кожного пода, який посилається на заявку.

NodeAllocatableResource

NodeAllocatableResource визначає перетворення між запитаними одиницями пристрою/ємності DRA та відповідною кількістю доступного для виділення ресурсу вузла. Має бути вказано принаймні щось одне або Mapping або Overhead. Якщо не вказано жодного, це є недійсною конфігурацією.


ПолеОпис
mapping
NodeAllocatableMapping
Mapping використовується, коли пристрій безпосередньо моделює ресурс, що може бути виділений на вузлі, наприклад стандартний CPU або пам’ять (наприклад, за допомогою драйвера CPU DRA). Розрахована величина враховується саме один раз для кожного екземпляра запиту на вузлі. Щоб уникнути конфліктів ізоляції cgroup на вузлі, планувальник явно блокує спільне використання відображених запитів пристроїв між кількома подами.
overhead
NodeAllocatableOverhead
Overhead містить поля для моделювання допоміжних накладних витрат на доступні для виділення ресурси вузла, які виникають при виділенні пристроїв, що самі не моделюють доступний для виділення ресурс вузла (наприклад, накладні витрати памʼяті хоста для GPU). Спільне використання заявок із накладними витратами, позначеними через mapping, між кількома подами дозволене. Накладні витрати на доступний для виділення ресурс вузла враховуються окремо для кожного пода, що посилається на заявку. Накладні витрати завжди віднімаються від доступної для виділення ємності вузла для цього ресурсу, навіть коли mapping вказано для того самого ресурсу. Наприклад: якщо пристрій моделює ємність памʼяті на сокет як пул споживаної ємності через Mapping (з CapacityKey), будь-які накладні витрати, вказані для того самого ресурсу, будуть відняті від загальної доступної для виділення ємності вузла, а не від пулу ємності на сокет у Mapping.

NodeSelectorRequirement

Вимога до селектора вузлів — це селектор, що містить значення, ключ та оператор, який повʼязує ключ і значення.


ПолеОпис
key *
string
Ключ мітки, до якого застосовується селектор.
operator *
string
Представляє відношення ключа до набору значень. Дійсні оператори: In, NotIn, Exists, DoesNotExist, Gt та Lt.

Можливі значення enum:
  • "DoesNotExist"
  • "Exists"
  • "Gt"
  • "In"
  • "Lt"
  • "NotIn"
values
string array
Масив значень рядків. Якщо оператор дорівнює In або NotIn, масив values повинен бути непорожнім. Якщо оператор дорівнює Exists або DoesNotExist, масив values повинен бути порожнім. Якщо оператор дорівнює Gt або Lt, масив values повинен містити один елемент, який буде інтерпретований як ціле число. Цей масив замінюється під час стратегічного злиття патчу.

ResourcePool

ResourcePool Описує пул, до якого належать ResourceSlices.


ПолеОпис
generation *
integer

Generation відстежує зміни в пулі з часом. Коли драйвер змінює щось у одному або декількох ресурсах у пулі, він повинен змінити generation у всіх ResourceSlices, які є частиною цього пулу. Споживачі ResourceSlices повинні враховувати лише ресурси з пулу з найвищим номером generation. Generation може бути скинутий драйверами, що має бути прийнятним для споживачів, за умови, що всі ResourceSlices у пулі оновлені або видалені.

У поєднанні з ResourceSliceCount, цей механізм дозволяє споживачам виявляти пули, які складаються з кількох ResourceSlices і знаходяться в неповному стані.

name *
string

Name використовується для ідентифікації пулу. Для локальних пристроїв вузла це часто імʼя вузла, але це не обовʼязково.

Воно не повинно перевищувати 253 символи і повинно складатися з одного або декількох піддоменів DNS, розділених слешами. Це поле є незмінним.

resourceSliceCount *
integer

ResourceSliceCount є загальною кількістю ResourceSlices у пулі на цей номер generation. Має бути більше нуля.

Споживачі можуть використовувати це, щоб перевірити, чи бачили вони всі ResourceSlices, що належать до одного пулу.

Операції


post Create

HTTP Запит

POST /apis/resource.k8s.io/v1/resourceslices

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
dryRunstringКоли параметр присутній, це вказує, що зміни не повинні зберігатися. Неправильна або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
  • All: всі етапи dry run будуть виконані
fieldManagerstringfieldManager є імʼям, повʼязаним з а́ктором або сутністю, яка вносить ці зміни. Значення повинно бути менше або дорівнювати 128 символам і містити лише друковані символи, як визначено в https://golang.org/pkg/unicode/#IsPrint.
fieldValidationstringfieldValidation інструктує сервер, як обробляти обʼєкти в запиті (POST/PUT/PATCH), що містять невідомі або дубльовані поля. Дійсні значення:
  • Ignore: Ігнорує всі невідомі поля, які без попередження видаляються з обʼєкта, а також ігнорує всі дублікати полів, крім останнього, на які натрапляє декодер. Це стандартна поведінка до v1.23.
  • Warn: Надсилає попередження через стандартний заголовок відповіді для кожного невідомого поля, яке видаляється з обʼєкта, і для кожного дубльованого поля, яке зустрічається. Запит все ще буде успішним, якщо немає інших помилок, і буде зберігатися лише останнє з будь-яких дубльованих полів. Це стандартна поведінка у v1.23+
  • Strict: У цьому випадку запит завершиться з помилкою BadRequest, якщо з обʼєкта будуть вилучені невідомі поля або якщо будуть виявлені дублікати полів. Помилка, що повертається сервером, міститиме всі виявлені невідомі та дубльовані поля.

Параметри тіла запиту

НазваТипОпис
bodyResourceSlice

Відповідь

СтатусОписВідповідь
200OKResourceSlice
201CreatedResourceSlice
202AcceptedResourceSlice

patch Patch

HTTP Запит

PATCH /apis/resource.k8s.io/v1/resourceslices/{name}

Параметри шляху

НазваТипОпис
namestringНазва ResourceSlice

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
dryRunstringКоли параметр присутній, це вказує, що зміни не повинні зберігатися. Неправильна або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
  • All: всі етапи dry run будуть виконані
fieldManagerstringfieldManager є імʼям, повʼязаним з а́ктором або сутністю, яка вносить ці зміни. Значення повинно бути менше або дорівнювати 128 символам і містити лише друковані символи, як визначено в https://golang.org/pkg/unicode/#IsPrint. Це поле обовʼязкове для запитів apply (application/apply-patch), але необовʼязкове для типів патчів, що не застосовуються (JsonPatch, MergePatch, StrategicMergePatch).
fieldValidationstringfieldValidation інструктує сервер, як обробляти обʼєкти в запиті (POST/PUT/PATCH), що містять невідомі або дубльовані поля. Дійсні значення:
  • Ignore: Ігнорує всі невідомі поля, які без попередження видаляються з обʼєкта, а також ігнорує всі дублікати полів, крім останнього, на які натрапляє декодер. Це стандартна поведінка до v1.23.
  • Warn: Надсилає попередження через стандартний заголовок відповіді для кожного невідомого поля, яке видаляється з обʼєкта, і для кожного дубльованого поля, яке зустрічається. Запит все ще буде успішним, якщо немає інших помилок, і буде зберігатися лише останнє з будь-яких дубльованих полів. Це стандартна поведінка у v1.23+
  • Strict: У цьому випадку запит завершиться з помилкою BadRequest, якщо з обʼєкта будуть вилучені невідомі поля або якщо будуть виявлені дублікати полів. Помилка, що повертається сервером, міститиме всі виявлені невідомі та дубльовані поля.
forcebooleanForce має на меті "примусово" застосовувати запити Apply. Це означає, що користувач повторно отримає конфліктні поля, що належать іншим користувачам. Прапорець Force повинен бути скасований для запитів, що не є патчами apply.

Параметри тіла запиту

НазваТипОпис
bodyPatch

Відповідь

СтатусОписВідповідь
200OKResourceSlice
201CreatedResourceSlice

put Replace

HTTP Запит

PUT /apis/resource.k8s.io/v1/resourceslices/{name}

Параметри шляху

НазваТипОпис
namestringНазва ResourceSlice

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
dryRunstringКоли параметр присутній, це вказує, що зміни не повинні зберігатися. Неправильна або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
  • All: всі етапи dry run будуть виконані
fieldManagerstringfieldManager є імʼям, повʼязаним з а́ктором або сутністю, яка вносить ці зміни. Значення повинно бути менше або дорівнювати 128 символам і містити лише друковані символи, як визначено в https://golang.org/pkg/unicode/#IsPrint.
fieldValidationstringfieldValidation інструктує сервер, як обробляти обʼєкти в запиті (POST/PUT/PATCH), що містять невідомі або дубльовані поля. Дійсні значення:
  • Ignore: Ігнорує всі невідомі поля, які без попередження видаляються з обʼєкта, а також ігнорує всі дублікати полів, крім останнього, на які натрапляє декодер. Це стандартна поведінка до v1.23.
  • Warn: Надсилає попередження через стандартний заголовок відповіді для кожного невідомого поля, яке видаляється з обʼєкта, і для кожного дубльованого поля, яке зустрічається. Запит все ще буде успішним, якщо немає інших помилок, і буде зберігатися лише останнє з будь-яких дубльованих полів. Це стандартна поведінка у v1.23+
  • Strict: У цьому випадку запит завершиться з помилкою BadRequest, якщо з обʼєкта будуть вилучені невідомі поля або якщо будуть виявлені дублікати полів. Помилка, що повертається сервером, міститиме всі виявлені невідомі та дубльовані поля.

Параметри тіла запиту

НазваТипОпис
bodyResourceSlice

Відповідь

СтатусОписВідповідь
200OKResourceSlice
201CreatedResourceSlice

delete Delete

HTTP Запит

DELETE /apis/resource.k8s.io/v1/resourceslices/{name}

Параметри шляху

НазваТипОпис
namestringНазва ResourceSlice

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
dryRunstringКоли параметр присутній, це вказує, що зміни не повинні зберігатися. Неправильна або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
  • All: всі етапи dry run будуть виконані
gracePeriodSecondsintegerЧасу у секундах перед видаленням обʼєкта. Значення повинно бути невідʼємним цілим числом. Значення нуль вказує на негайне видалення. Якщо це значення відсутнє, буде використано стандартний період очікування для зазначеного типу. Зазвичай використовується значення для конкретного обʼєкта, якщо не вказано. Нуль означає негайне видалення.
ignoreStoreReadErrorWithClusterBreakingPotentialbooleanЯкщо встановлено в true, це призведе до небезпечного видалення ресурсу у випадку, якщо нормальний процес видалення не вдасться через помилку пошкодженого обʼєкта. Ресурс вважається пошкодженим, якщо його не можна успішно отримати з відповідного сховища томущо: a) його дані не можна трансформувати, наприклад, помилка дешифрування, або b) не вдається декодувати в обʼєкт. ПРИМІТКА: небезпечне видалення ігнорує обмеження завершувача, пропускає перевірки передумов і видаляє обʼєкт зі сховища. ПОПЕРЕДЖЕННЯ: це може потенційно порушити роботу кластера, якщо робоче навантаження, повʼязане з ресурсом, що видаляється небезпечно, покладається на нормальний процес видалення. Використовуйте лише якщо ви ДІЙСНО знаєте, що робите. Стандартне значення — false, і користувач повинен явно погодитися на його використання.
orphanDependentsbooleanЗастаріло: будь ласка, використовуйте PropagationPolicy, це поле буде застарілим у версії 1.7. Чи повинні залежні обʼєкти залишатися покинутими. Якщо true/false, завершувач "orphan" буде доданий до/видалений з списку завершувачів обʼєкта. Можна встановити або це поле, або PropagationPolicy, але не обидва.
propagationPolicystringЧи і як буде виконано збір сміття. Можна встановити або це поле, або OrphanDependents, але не обидва. Стандартна політика визначається наявним завершувачем у metadata.finalizers та стандартною політикою для конкретного ресурсу. Допустимі значення: 'Orphan' — залишити залежні обʼєкти покинутими; 'Background' — дозволити збирачу сміття видаляти залежні обʼєкти у фоновому режимі; 'Foreground' — каскадна політика, яка видаляє всі залежні обʼєкти з показом всіх дій.

Параметри тіла запиту

НазваТипОпис
bodyDeleteOptions

Відповідь

СтатусОписВідповідь
200OKResourceSlice
202AcceptedResourceSlice

delete Delete Collection

HTTP Запит

DELETE /apis/resource.k8s.io/v1/resourceslices

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
continuestringОпція continue повинна бути встановлена при отриманні додаткових результатів від сервера. Оскільки це значення визначається сервером, клієнти можуть використовувати значення continue лише з попереднього результату запиту з ідентичними параметрами запиту (крім значення continue), і сервер може відхилити значення continue, яке він не розпізнає. Якщо вказане значення continue більше не дійсне через закінчення терміну дії (зазвичай пʼять-пʼятнадцять хвилин) або зміну конфігурації на сервері, сервер відповість помилкою 410 ResourceExpired разом з токеном continue. Якщо клієнту потрібен послідовний список, він повинен перезапустити свій список без поля continue. В іншому випадку клієнт може надіслати ще один запит списку з токеном, отриманим з помилкою 410, сервер відповість списком, починаючи з наступного ключа, але з останнього знімка, що не відповідає попереднім результатам списку — обʼєкти, які були створені, змінені або видалені після першого запиту списку, будуть включені у відповідь, якщо їх ключі йдуть після "наступного ключа". Це поле не підтримується, коли watch встановлено в true. Клієнти можуть почати спостереження з останнього значення resourceVersion, повернутого сервером, і не пропустити жодних змін.
dryRunstringКоли параметр присутній, це вказує, що зміни не повинні зберігатися. Неправильна або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
  • All: всі етапи dry run будуть виконані
fieldSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми полями. Зазвичай повертаються всі обʼєкти.
gracePeriodSecondsintegerЧасу у секундах перед видаленням обʼєкта. Значення повинно бути невідʼємним цілим числом. Значення нуль вказує на негайне видалення. Якщо це значення відсутнє, буде використано стандартний період очікування для зазначеного типу. Зазвичай використовується значення для конкретного обʼєкта, якщо не вказано. Нуль означає негайне видалення.
ignoreStoreReadErrorWithClusterBreakingPotentialbooleanЯкщо встановлено в true, це призведе до небезпечного видалення ресурсу у випадку, якщо нормальний процес видалення не вдасться через помилку пошкодженого обʼєкта. Ресурс вважається пошкодженим, якщо його не можна успішно отримати з відповідного сховища томущо: a) його дані не можна трансформувати, наприклад, помилка дешифрування, або b) не вдається декодувати в обʼєкт. ПРИМІТКА: небезпечне видалення ігнорує обмеження завершувача, пропускає перевірки передумов і видаляє обʼєкт зі сховища. ПОПЕРЕДЖЕННЯ: це може потенційно порушити роботу кластера, якщо робоче навантаження, повʼязане з ресурсом, що видаляється небезпечно, покладається на нормальний процес видалення. Використовуйте лише якщо ви ДІЙСНО знаєте, що робите. Стандартне значення — false, і користувач повинен явно погодитися на його використання.
labelSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми мітками. Зазвичай повертаються всі обʼєкти.
limitintegerlimit є максимальним числом відповідей, які потрібно повернути для виклику списку. Якщо існує більше елементів, сервер встановить поле continue у метаданих списку на значення, яке можна використовувати з тим самим початковим запитом для отримання наступного набору результатів. Встановлення обмеження може повернути менше, ніж запитана кількість елементів (до нуля елементів) у випадку, якщо всі запитані обʼєкти відфільтровані, і клієнти повинні використовувати лише наявність поля continue, щоб визначити, чи доступні додаткові результати. Сервери можуть вирішити не підтримувати аргумент limit і повернуть усі доступні результати. Якщо limit вказано, а поле continue порожнє, клієнти можуть припустити, що результатів більше немає. Це поле не підтримується, якщо watch дорівнює true. Сервер гарантує, що обʼєкти, повернені при використанні continue, будуть ідентичні до виконання одного виклику списку без обмеження — тобто жодні обʼєкти, створені, змінені або видалені після першого запиту, не будуть включені в будь-які наступні продовжені запити. Це іноді називають послідовним знімком, і забезпечує, що клієнт, який використовує limit для отримання менших частин дуже великого результату, може бути впевнений, що він бачить усі можливі обʼєкти. Якщо обʼєкти оновлюються під час отримання часткового списку, повертається версія обʼєкта, яка була присутня на момент обчислення першого результату списку.
orphanDependentsbooleanЗастаріло: будь ласка, використовуйте PropagationPolicy, це поле буде застарілим у версії 1.7. Чи повинні залежні обʼєкти залишатися покинутими. Якщо true/false, завершувач "orphan" буде доданий до/видалений з списку завершувачів обʼєкта. Можна встановити або це поле, або PropagationPolicy, але не обидва.
propagationPolicystringЧи і як буде виконано збір сміття. Можна встановити або це поле, або OrphanDependents, але не обидва. Стандартна політика визначається наявним завершувачем у metadata.finalizers та стандартною політикою для конкретного ресурсу. Допустимі значення: 'Orphan' — залишити залежні обʼєкти покинутими; 'Background' — дозволити збирачу сміття видаляти залежні обʼєкти у фоновому режимі; 'Foreground' — каскадна політика, яка видаляє всі залежні обʼєкти з показом всіх дій.
resourceVersionstringresourceVersion встановлює обмеження на те, з яких версій ресурсів може обслуговуватися запит. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
resourceVersionMatchstringresourceVersionMatch визначає, як resourceVersion застосовується до викликів списку. Рекомендується встановлювати resourceVersionMatch для викликів списку, де встановлено resourceVersion. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
sendInitialEventsbooleansendInitialEvents=true може бути встановлено разом з watch=true. У цьому випадку потік спостереження почнеться з синтетичних подій для відтворення поточного стану обʼєктів у колекції. Після надсилання всіх таких подій буде надіслано синтетичну подію "Bookmark". Закладка повідомить ResourceVersion (RV), що відповідає набору обʼєктів, і буде позначена анотацією "k8s.io/initial-events-end": "true". Після цього потік спостереження продовжиться як зазвичай, надсилаючи події спостереження, що відповідають змінам (після RV) для спостережуваних обʼєктів. Коли встановлено опцію sendInitialEvents, ми вимагаємо також встановлення опції resourceVersionMatch. Семантика запиту спостереження наступна:
  • resourceVersionMatch = NotOlderThan інтерпретується як «дані, що є принаймні такими ж новими, як зазначена resourceVersion», і подія bookmark надсилається, коли стан синхронізується з resourceVersion, яка є принаймні такою ж актуальною, як та, що вказана в ListOptions. Якщо resourceVersion не встановлено, це інтерпретується як «послідовне читання», і подія bookmark надсилається, коли стан синхронізується принаймні до моменту, коли почалася обробка запиту.
  • resourceVersionMatch, встановлений на будь-яке інше значення або не встановлений — повертається помилка Invalid. Стандартне значення true, якщо resourceVersion="" або resourceVersion="0" (з міркувань сумісності) і false в іншому випадку.
shardSelectorstringshardSelector обмежує список обʼєктів, що повертаються, за допомогою виразу вибору шардів на основі CEL. Формат використовує функцію shardRange() у поєднанні з || (логічне АБО) для вказівки одного або кількох діапазонів хешів:
shardRange(object.metadata.uid, '0x0', '0x8000000000000000')
shardRange(object.metadata.uid, '0x0', '0x8000000000000000') || shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
Шляхи полів використовують синтаксис CEL, що починається з обʼєкта (наприклад, "object.metadata.uid"), а не формат fieldSelector ("metadata.uid"). Наразі підтримуються такі шляхи:
  • object.metadata.uid
  • object.metadata.namespace
hexStart і hexEnd є рядковими літералами CEL у одинарних лапках з префіксом '0x', що визначають включну нижню і виключну верхню межі в 64-бітовому просторі хешів FNV-1a. Повний діапазон: [0x0, 0x10000000000000000), де виключна верхня межа дорівнює 2^64. Приклади:
  • 2-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
  • 4-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x4000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x4000000000000000', '0x8000000000000000')
    шард 2: shardRange(object.metadata.uid, '0x8000000000000000', '0xc000000000000000')
    шард 3: shardRange(object.metadata.uid, '0xc000000000000000', '0x10000000000000000')
Це альфа-поле і вимагає увімкнення функціональної можливості ShardedListAndWatch.
timeoutSecondsintegerЧас очікування для виклику list/watch. Це обмежує тривалість виклику, незалежно від будь-якої активності чи неактивності.

Параметри тіла запиту

НазваТипОпис
bodyDeleteOptions

Відповідь

СтатусОписВідповідь
200OKStatus

get Read

HTTP Запит

GET /apis/resource.k8s.io/v1/resourceslices/{name}

Параметри шляху

НазваТипОпис
namestringНазва ResourceSlice

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).

Відповідь

СтатусОписВідповідь
200OKResourceSlice

get List

HTTP Запит

GET /apis/resource.k8s.io/v1/resourceslices

Параметри запиту

НазваТипОпис
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
allowWatchBookmarksbooleanallowWatchBookmarks запитує події спостереження з типом "BOOKMARK". Сервери, які не реалізують закладки, можуть ігнорувати цей прапорець, а закладки надсилаються на розсуд сервера. Клієнти не повинні припускати, що закладки повертаються через певний інтервал, і не можуть припускати, що сервер надішле будь-яку подію BOOKMARK під час сеансу. Якщо це не спостереження, це поле ігнорується.
continuestringОпція continue повинна бути встановлена при отриманні додаткових результатів від сервера. Оскільки це значення визначається сервером, клієнти можуть використовувати значення continue лише з попереднього результату запиту з ідентичними параметрами запиту (крім значення continue), і сервер може відхилити значення continue, яке він не розпізнає. Якщо вказане значення continue більше не дійсне через закінчення терміну дії (зазвичай пʼять-пʼятнадцять хвилин) або зміну конфігурації на сервері, сервер відповість помилкою 410 ResourceExpired разом з токеном continue. Якщо клієнту потрібен послідовний список, він повинен перезапустити свій список без поля continue. В іншому випадку клієнт може надіслати ще один запит списку з токеном, отриманим з помилкою 410, сервер відповість списком, починаючи з наступного ключа, але з останнього знімка, що не відповідає попереднім результатам списку — обʼєкти, які були створені, змінені або видалені після першого запиту списку, будуть включені у відповідь, якщо їх ключі йдуть після "наступного ключа". Це поле не підтримується, коли watch встановлено в true. Клієнти можуть почати спостереження з останнього значення resourceVersion, повернутого сервером, і не пропустити жодних змін.
fieldSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми полями. Зазвичай повертаються всі обʼєкти.
labelSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми мітками. Зазвичай повертаються всі обʼєкти.
limitintegerlimit є максимальним числом відповідей, які потрібно повернути для виклику списку. Якщо існує більше елементів, сервер встановить поле continue у метаданих списку на значення, яке можна використовувати з тим самим початковим запитом для отримання наступного набору результатів. Встановлення обмеження може повернути менше, ніж запитана кількість елементів (до нуля елементів) у випадку, якщо всі запитані обʼєкти відфільтровані, і клієнти повинні використовувати лише наявність поля continue, щоб визначити, чи доступні додаткові результати. Сервери можуть вирішити не підтримувати аргумент limit і повернуть усі доступні результати. Якщо limit вказано, а поле continue порожнє, клієнти можуть припустити, що результатів більше немає. Це поле не підтримується, якщо watch дорівнює true. Сервер гарантує, що обʼєкти, повернені при використанні continue, будуть ідентичні до виконання одного виклику списку без обмеження — тобто жодні обʼєкти, створені, змінені або видалені після першого запиту, не будуть включені в будь-які наступні продовжені запити. Це іноді називають послідовним знімком, і забезпечує, що клієнт, який використовує limit для отримання менших частин дуже великого результату, може бути впевнений, що він бачить усі можливі обʼєкти. Якщо обʼєкти оновлюються під час отримання часткового списку, повертається версія обʼєкта, яка була присутня на момент обчислення першого результату списку.
resourceVersionstringresourceVersion встановлює обмеження на те, з яких версій ресурсів може обслуговуватися запит. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
resourceVersionMatchstringresourceVersionMatch визначає, як resourceVersion застосовується до викликів списку. Рекомендується встановлювати resourceVersionMatch для викликів списку, де встановлено resourceVersion. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
sendInitialEventsbooleansendInitialEvents=true може бути встановлено разом з watch=true. У цьому випадку потік спостереження почнеться з синтетичних подій для відтворення поточного стану обʼєктів у колекції. Після надсилання всіх таких подій буде надіслано синтетичну подію "Bookmark". Закладка повідомить ResourceVersion (RV), що відповідає набору обʼєктів, і буде позначена анотацією "k8s.io/initial-events-end": "true". Після цього потік спостереження продовжиться як зазвичай, надсилаючи події спостереження, що відповідають змінам (після RV) для спостережуваних обʼєктів. Коли встановлено опцію sendInitialEvents, ми вимагаємо також встановлення опції resourceVersionMatch. Семантика запиту спостереження наступна:
  • resourceVersionMatch = NotOlderThan інтерпретується як «дані, що є принаймні такими ж новими, як зазначена resourceVersion», і подія bookmark надсилається, коли стан синхронізується з resourceVersion, яка є принаймні такою ж актуальною, як та, що вказана в ListOptions. Якщо resourceVersion не встановлено, це інтерпретується як «послідовне читання», і подія bookmark надсилається, коли стан синхронізується принаймні до моменту, коли почалася обробка запиту.
  • resourceVersionMatch, встановлений на будь-яке інше значення або не встановлений — повертається помилка Invalid. Стандартне значення true, якщо resourceVersion="" або resourceVersion="0" (з міркувань сумісності) і false в іншому випадку.
shardSelectorstringshardSelector обмежує список обʼєктів, що повертаються, за допомогою виразу вибору шардів на основі CEL. Формат використовує функцію shardRange() у поєднанні з || (логічне АБО) для вказівки одного або кількох діапазонів хешів:
shardRange(object.metadata.uid, '0x0', '0x8000000000000000')
shardRange(object.metadata.uid, '0x0', '0x8000000000000000') || shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
Шляхи полів використовують синтаксис CEL, що починається з обʼєкта (наприклад, "object.metadata.uid"), а не формат fieldSelector ("metadata.uid"). Наразі підтримуються такі шляхи:
  • object.metadata.uid
  • object.metadata.namespace
hexStart і hexEnd є рядковими літералами CEL у одинарних лапках з префіксом '0x', що визначають включну нижню і виключну верхню межі в 64-бітовому просторі хешів FNV-1a. Повний діапазон: [0x0, 0x10000000000000000), де виключна верхня межа дорівнює 2^64. Приклади:
  • 2-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
  • 4-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x4000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x4000000000000000', '0x8000000000000000')
    шард 2: shardRange(object.metadata.uid, '0x8000000000000000', '0xc000000000000000')
    шард 3: shardRange(object.metadata.uid, '0xc000000000000000', '0x10000000000000000')
Це альфа-поле і вимагає увімкнення функціональної можливості ShardedListAndWatch.
timeoutSecondsintegerЧас очікування для виклику list/watch. Це обмежує тривалість виклику, незалежно від будь-якої активності чи неактивності.
watchbooleanСпостерігати за змінами описаних ресурсів і повертати їх як потік сповіщень про додавання, оновлення та видалення. Вкажіть resourceVersion.

Відповідь

СтатусОписВідповідь
200OKResourceSliceList

get Watch

HTTP Запит

GET /apis/resource.k8s.io/v1/watch/resourceslices/{name}

Параметри шляху

НазваТипОпис
namestringНазва ResourceSlice

Параметри запиту

НазваТипОпис
allowWatchBookmarksbooleanallowWatchBookmarks запитує події спостереження з типом "BOOKMARK". Сервери, які не реалізують закладки, можуть ігнорувати цей прапорець, а закладки надсилаються на розсуд сервера. Клієнти не повинні припускати, що закладки повертаються через певний інтервал, і не можуть припускати, що сервер надішле будь-яку подію BOOKMARK під час сеансу. Якщо це не спостереження, це поле ігнорується.
continuestringОпція continue повинна бути встановлена при отриманні додаткових результатів від сервера. Оскільки це значення визначається сервером, клієнти можуть використовувати значення continue лише з попереднього результату запиту з ідентичними параметрами запиту (крім значення continue), і сервер може відхилити значення continue, яке він не розпізнає. Якщо вказане значення continue більше не дійсне через закінчення терміну дії (зазвичай пʼять-пʼятнадцять хвилин) або зміну конфігурації на сервері, сервер відповість помилкою 410 ResourceExpired разом з токеном continue. Якщо клієнту потрібен послідовний список, він повинен перезапустити свій список без поля continue. В іншому випадку клієнт може надіслати ще один запит списку з токеном, отриманим з помилкою 410, сервер відповість списком, починаючи з наступного ключа, але з останнього знімка, що не відповідає попереднім результатам списку — обʼєкти, які були створені, змінені або видалені після першого запиту списку, будуть включені у відповідь, якщо їх ключі йдуть після "наступного ключа". Це поле не підтримується, коли watch встановлено в true. Клієнти можуть почати спостереження з останнього значення resourceVersion, повернутого сервером, і не пропустити жодних змін.
fieldSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми полями. Зазвичай повертаються всі обʼєкти.
labelSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми мітками. Зазвичай повертаються всі обʼєкти.
limitintegerlimit є максимальним числом відповідей, які потрібно повернути для виклику списку. Якщо існує більше елементів, сервер встановить поле continue у метаданих списку на значення, яке можна використовувати з тим самим початковим запитом для отримання наступного набору результатів. Встановлення обмеження може повернути менше, ніж запитана кількість елементів (до нуля елементів) у випадку, якщо всі запитані обʼєкти відфільтровані, і клієнти повинні використовувати лише наявність поля continue, щоб визначити, чи доступні додаткові результати. Сервери можуть вирішити не підтримувати аргумент limit і повернуть усі доступні результати. Якщо limit вказано, а поле continue порожнє, клієнти можуть припустити, що результатів більше немає. Це поле не підтримується, якщо watch дорівнює true. Сервер гарантує, що обʼєкти, повернені при використанні continue, будуть ідентичні до виконання одного виклику списку без обмеження — тобто жодні обʼєкти, створені, змінені або видалені після першого запиту, не будуть включені в будь-які наступні продовжені запити. Це іноді називають послідовним знімком, і забезпечує, що клієнт, який використовує limit для отримання менших частин дуже великого результату, може бути впевнений, що він бачить усі можливі обʼєкти. Якщо обʼєкти оновлюються під час отримання часткового списку, повертається версія обʼєкта, яка була присутня на момент обчислення першого результату списку.
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
resourceVersionstringresourceVersion встановлює обмеження на те, з яких версій ресурсів може обслуговуватися запит. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
resourceVersionMatchstringresourceVersionMatch визначає, як resourceVersion застосовується до викликів списку. Рекомендується встановлювати resourceVersionMatch для викликів списку, де встановлено resourceVersion. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
sendInitialEventsbooleansendInitialEvents=true може бути встановлено разом з watch=true. У цьому випадку потік спостереження почнеться з синтетичних подій для відтворення поточного стану обʼєктів у колекції. Після надсилання всіх таких подій буде надіслано синтетичну подію "Bookmark". Закладка повідомить ResourceVersion (RV), що відповідає набору обʼєктів, і буде позначена анотацією "k8s.io/initial-events-end": "true". Після цього потік спостереження продовжиться як зазвичай, надсилаючи події спостереження, що відповідають змінам (після RV) для спостережуваних обʼєктів. Коли встановлено опцію sendInitialEvents, ми вимагаємо також встановлення опції resourceVersionMatch. Семантика запиту спостереження наступна:
  • resourceVersionMatch = NotOlderThan інтерпретується як «дані, що є принаймні такими ж новими, як зазначена resourceVersion», і подія bookmark надсилається, коли стан синхронізується з resourceVersion, яка є принаймні такою ж актуальною, як та, що вказана в ListOptions. Якщо resourceVersion не встановлено, це інтерпретується як «послідовне читання», і подія bookmark надсилається, коли стан синхронізується принаймні до моменту, коли почалася обробка запиту.
  • resourceVersionMatch, встановлений на будь-яке інше значення або не встановлений — повертається помилка Invalid. Стандартне значення true, якщо resourceVersion="" або resourceVersion="0" (з міркувань сумісності) і false в іншому випадку.
shardSelectorstringshardSelector обмежує список обʼєктів, що повертаються, за допомогою виразу вибору шардів на основі CEL. Формат використовує функцію shardRange() у поєднанні з || (логічне АБО) для вказівки одного або кількох діапазонів хешів:
shardRange(object.metadata.uid, '0x0', '0x8000000000000000')
shardRange(object.metadata.uid, '0x0', '0x8000000000000000') || shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
Шляхи полів використовують синтаксис CEL, що починається з обʼєкта (наприклад, "object.metadata.uid"), а не формат fieldSelector ("metadata.uid"). Наразі підтримуються такі шляхи:
  • object.metadata.uid
  • object.metadata.namespace
hexStart і hexEnd є рядковими літералами CEL у одинарних лапках з префіксом '0x', що визначають включну нижню і виключну верхню межі в 64-бітовому просторі хешів FNV-1a. Повний діапазон: [0x0, 0x10000000000000000), де виключна верхня межа дорівнює 2^64. Приклади:
  • 2-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
  • 4-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x4000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x4000000000000000', '0x8000000000000000')
    шард 2: shardRange(object.metadata.uid, '0x8000000000000000', '0xc000000000000000')
    шард 3: shardRange(object.metadata.uid, '0xc000000000000000', '0x10000000000000000')
Це альфа-поле і вимагає увімкнення функціональної можливості ShardedListAndWatch.
timeoutSecondsintegerЧас очікування для виклику list/watch. Це обмежує тривалість виклику, незалежно від будь-якої активності чи неактивності.
watchbooleanСпостерігати за змінами описаних ресурсів і повертати їх як потік сповіщень про додавання, оновлення та видалення. Вкажіть resourceVersion.

Відповідь

СтатусОписВідповідь
200OKWatchEvent

get Watch List

HTTP Запит

GET /apis/resource.k8s.io/v1/watch/resourceslices

Параметри запиту

НазваТипОпис
allowWatchBookmarksbooleanallowWatchBookmarks запитує події спостереження з типом "BOOKMARK". Сервери, які не реалізують закладки, можуть ігнорувати цей прапорець, а закладки надсилаються на розсуд сервера. Клієнти не повинні припускати, що закладки повертаються через певний інтервал, і не можуть припускати, що сервер надішле будь-яку подію BOOKMARK під час сеансу. Якщо це не спостереження, це поле ігнорується.
continuestringОпція continue повинна бути встановлена при отриманні додаткових результатів від сервера. Оскільки це значення визначається сервером, клієнти можуть використовувати значення continue лише з попереднього результату запиту з ідентичними параметрами запиту (крім значення continue), і сервер може відхилити значення continue, яке він не розпізнає. Якщо вказане значення continue більше не дійсне через закінчення терміну дії (зазвичай пʼять-пʼятнадцять хвилин) або зміну конфігурації на сервері, сервер відповість помилкою 410 ResourceExpired разом з токеном continue. Якщо клієнту потрібен послідовний список, він повинен перезапустити свій список без поля continue. В іншому випадку клієнт може надіслати ще один запит списку з токеном, отриманим з помилкою 410, сервер відповість списком, починаючи з наступного ключа, але з останнього знімка, що не відповідає попереднім результатам списку — обʼєкти, які були створені, змінені або видалені після першого запиту списку, будуть включені у відповідь, якщо їх ключі йдуть після "наступного ключа". Це поле не підтримується, коли watch встановлено в true. Клієнти можуть почати спостереження з останнього значення resourceVersion, повернутого сервером, і не пропустити жодних змін.
fieldSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми полями. Зазвичай повертаються всі обʼєкти.
labelSelectorstringСелектор для обмеження списку обʼєктів, що повертаються, за їхніми мітками. Зазвичай повертаються всі обʼєкти.
limitintegerlimit є максимальним числом відповідей, які потрібно повернути для виклику списку. Якщо існує більше елементів, сервер встановить поле continue у метаданих списку на значення, яке можна використовувати з тим самим початковим запитом для отримання наступного набору результатів. Встановлення обмеження може повернути менше, ніж запитана кількість елементів (до нуля елементів) у випадку, якщо всі запитані обʼєкти відфільтровані, і клієнти повинні використовувати лише наявність поля continue, щоб визначити, чи доступні додаткові результати. Сервери можуть вирішити не підтримувати аргумент limit і повернуть усі доступні результати. Якщо limit вказано, а поле continue порожнє, клієнти можуть припустити, що результатів більше немає. Це поле не підтримується, якщо watch дорівнює true. Сервер гарантує, що обʼєкти, повернені при використанні continue, будуть ідентичні до виконання одного виклику списку без обмеження — тобто жодні обʼєкти, створені, змінені або видалені після першого запиту, не будуть включені в будь-які наступні продовжені запити. Це іноді називають послідовним знімком, і забезпечує, що клієнт, який використовує limit для отримання менших частин дуже великого результату, може бути впевнений, що він бачить усі можливі обʼєкти. Якщо обʼєкти оновлюються під час отримання часткового списку, повертається версія обʼєкта, яка була присутня на момент обчислення першого результату списку.
prettystringЯкщо 'true', то вихідні дані форматуються у зручному для читання вигляді. Зазвичай 'false', якщо user-agent не вказує оглядач або командний інструмент для роботи з HTTP (curl та wget).
resourceVersionstringresourceVersion встановлює обмеження на те, з яких версій ресурсів може обслуговуватися запит. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
resourceVersionMatchstringresourceVersionMatch визначає, як resourceVersion застосовується до викликів списку. Рекомендується встановлювати resourceVersionMatch для викликів списку, де встановлено resourceVersion. Див. https://kubernetes.io/docs/reference/using-api/api-concepts/#resource-versions для деталей. Стандартне значення не встановлено
sendInitialEventsbooleansendInitialEvents=true може бути встановлено разом з watch=true. У цьому випадку потік спостереження почнеться з синтетичних подій для відтворення поточного стану обʼєктів у колекції. Після надсилання всіх таких подій буде надіслано синтетичну подію "Bookmark". Закладка повідомить ResourceVersion (RV), що відповідає набору обʼєктів, і буде позначена анотацією "k8s.io/initial-events-end": "true". Після цього потік спостереження продовжиться як зазвичай, надсилаючи події спостереження, що відповідають змінам (після RV) для спостережуваних обʼєктів. Коли встановлено опцію sendInitialEvents, ми вимагаємо також встановлення опції resourceVersionMatch. Семантика запиту спостереження наступна:
  • resourceVersionMatch = NotOlderThan інтерпретується як «дані, що є принаймні такими ж новими, як зазначена resourceVersion», і подія bookmark надсилається, коли стан синхронізується з resourceVersion, яка є принаймні такою ж актуальною, як та, що вказана в ListOptions. Якщо resourceVersion не встановлено, це інтерпретується як «послідовне читання», і подія bookmark надсилається, коли стан синхронізується принаймні до моменту, коли почалася обробка запиту.
  • resourceVersionMatch, встановлений на будь-яке інше значення або не встановлений — повертається помилка Invalid. Стандартне значення true, якщо resourceVersion="" або resourceVersion="0" (з міркувань сумісності) і false в іншому випадку.
shardSelectorstringshardSelector обмежує список обʼєктів, що повертаються, за допомогою виразу вибору шардів на основі CEL. Формат використовує функцію shardRange() у поєднанні з || (логічне АБО) для вказівки одного або кількох діапазонів хешів:
shardRange(object.metadata.uid, '0x0', '0x8000000000000000')
shardRange(object.metadata.uid, '0x0', '0x8000000000000000') || shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
Шляхи полів використовують синтаксис CEL, що починається з обʼєкта (наприклад, "object.metadata.uid"), а не формат fieldSelector ("metadata.uid"). Наразі підтримуються такі шляхи:
  • object.metadata.uid
  • object.metadata.namespace
hexStart і hexEnd є рядковими літералами CEL у одинарних лапках з префіксом '0x', що визначають включну нижню і виключну верхню межі в 64-бітовому просторі хешів FNV-1a. Повний діапазон: [0x0, 0x10000000000000000), де виключна верхня межа дорівнює 2^64. Приклади:
  • 2-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x8000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x8000000000000000', '0x10000000000000000')
  • 4-шардове розділення:
    шард 0: shardRange(object.metadata.uid, '0x0000000000000000', '0x4000000000000000')
    шард 1: shardRange(object.metadata.uid, '0x4000000000000000', '0x8000000000000000')
    шард 2: shardRange(object.metadata.uid, '0x8000000000000000', '0xc000000000000000')
    шард 3: shardRange(object.metadata.uid, '0xc000000000000000', '0x10000000000000000')
Це альфа-поле і вимагає увімкнення функціональної можливості ShardedListAndWatch.
timeoutSecondsintegerЧас очікування для виклику list/watch. Це обмежує тривалість виклику, незалежно від будь-якої активності чи неактивності.
watchbooleanСпостерігати за змінами описаних ресурсів і повертати їх як потік сповіщень про додавання, оновлення та видалення. Вкажіть resourceVersion.

Відповідь

СтатусОписВідповідь
200OKWatchEvent
Востаннє змінено September 03, 2026 at 5:28 PM PST: [uk] Ukrainian translation (all-in-one) (2fedabf8e5)