ResourceSlice v1beta2
apiVersion: resource.k8s.io/v1beta2
import "k8s.io/api/resource/v1beta2"
ResourceSlice
ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, що управляються спільним драйвером. Пул може охоплювати більше ніж один ResourceSlice, і точна кількість ResourceSlices, що складають пул, визначається драйвером.
Наразі підтримуються лише пристрої з атрибутами та ємностями (capacities). Кожен пристрій у певному пулі, незалежно від кількості ResourceSlices, повинен мати унікальне імʼя. ResourceSlice, в якому пристрій публікується, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.
Щоразу, коли драйверу потрібно оновити пул, він інкрементує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером і новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління та ігнорувати всі інші.
При виділенні всіх ресурсів в пулі, що відповідають певним критеріям, або при пошуку найкращого рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включену в кожен ResourceSlice), щоб визначити, чи є його погляд на пул повним, і, якщо ні, чекати, поки драйвер завершить оновлення пулу.
Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузлів для вказівки, де пристрої доступні.
Це альфа-тип і вимагає активації функціональної можливості DynamicResourceAllocation.
apiVersion: resource.k8s.io/v1beta2
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 або PerDeviceNodeSelection.
devices ([]Device)
Atomic: буде замінено під час злиття
Devices перераховує деякі або всі пристрої в цьому пулі.
Не повинно бути більше ніж 128 записів.
Device представляє один індивідуальний апаратний екземпляр, який може бути вибраний на основі його атрибутів. Окрім імені, має бути встановлено точно одне поле.
devices.name (string), обовʼязково
Name є унікальним ідентифікатором серед усіх пристроїв, які управляються драйвером у пулі. Має бути піддоменом DNS.
devices.allNodes (boolean)
AllNodes означає, що всі вузли мають доступ до пристрою.
Має бути задано тільки якщо Spec.PerDeviceNodeSelection має значення true. Може бути задано не більше одного з NodeName, NodeSelector та AllNodes.
devices.attributes (map[string]DeviceAttribute)
Attributes визначає набір атрибутів для цього пристрою. Імʼя кожного атрибута повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
DeviceAttribute має бути встановлено точно одне поле.
devices.attributes.bool (boolean)
BoolValue є значенням true/false.
devices.attributes.int (int64)
IntValue є числом.
devices.attributes.string (string)
StringValue є рядком. Не повинно бути довше 64 символів.
devices.attributes.version (string)
VersionValue є семантичною версією відповідно до специфікації semver.org 2.0.0. Не повинна перевищувати 64 символи в довжину.
devices.capacity (map[string]DeviceCapacity)
Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
DeviceCapacity описує кількість, повʼязану з пристроєм.
devices.capacity.value (Quantity), обовʼязково
Value визначає, яка частина певної ємності пристрою є доступною.
devices.consumesCounters ([]DeviceCounterConsumption)
Atomic: буде замінено під час злиття
ConsumesCounters визначає список посилань на sharedCounters та набір лічильників, які пристрій буде споживати з цих наборів.
Для кожного набору лічильників може бути лише один запис.
Загальна кількість записів про споживання лічильників пристроєм має бути <= 32. Крім того, загальна кількість у всьому ResourceSlice має бути <= 1024 (наприклад, 64 пристрої з 16 лічильниками кожен).
DeviceCounterConsumption визначає набір лічильників, які пристрій буде споживати з CounterSet.
devices.consumesCounters.counterSet (string), обовʼязково
CounterSet є назвою множини, з якої будуть використовуватися визначені лічильники.
devices.consumesCounters.counters (map[string]Counter), обовʼязково
Counters визначає лічильники, які будуть споживатися пристроєм.
Максимальна кількість лічильників у пристрої — 32. Крім того, максимальна кількість усіх лічильників у всіх пристроях — 1024 (наприклад, 64 пристрої по 16 лічильників у кожному).
Counter описує кількість, повʼязану з пристроєм.
devices.consumesCounters.counters.value (Quantity), обовʼязково
Value визначає, скільки лічильника певного пристрою доступно.
devices.nodeName (string)
NodeName визначає вузол, на якому доступний пристрій.
Має бути задано тільки якщо Spec.PerDeviceNodeSelection має значення true. Може бути задано принаймні одне з NodeName, NodeSelector та AllNodes.
devices.nodeSelector (NodeSelector)
NodeSelector визначає вузол, на якому доступний пристрій.
Повинен використовувати лише один термін.
Має бути задано тільки якщо Spec.PerDeviceNodeSelection має значення true. Може бути задано принаймні одне з NodeName, NodeSelector та AllNodes.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів міток по набору вузлів; тобто, він представляє логічну операцію OR селекторів, представлених термінами селектора вузлів.
devices.nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm), обовʼязково
Atomic: буде замінено під час злиття
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
devices.nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузлів за мітками вузлів.
devices.nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузла за полями вузла.
devices.taints ([]DeviceTaint)
Atomic: буде замінено під час злиття
Якщо вказано, то це taint, визначені драйвером.
Максимальна кількість taint — 4.
Це альфа-поле і вимагає увімкнення функціональної можливості DRADeviceTaints.
Пристрій, до якого прикріплено цей taint, має «вплив» на будь-яку заявку, яка не толерує taint, і, через заявку, на podʼи, що використовують цю заявку.
devices.taints.effect (string), обовʼязково
Вплив taint на заявки, які не толерують taint, а через такі заявки на podʼи, які їх використовують. Допустимими ефектами є NoSchedule та NoExecute. PreferNoSchedule, що використовується для вузлів, тут не діє.
devices.taints.key (string), обовʼязково
Ключ taint, який буде застосовано до пристрою. Повинна бути назва мітки.
devices.taints.timeAdded (Time)
TimeAdded показує час, коли було додано taint. Додається автоматично під час створення або оновлення, якщо не встановлено.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
devices.taints.value (string)
Значення taint, що відповідає ключу taint. Має бути значенням мітки.
nodeName (string)
NodeName ідентифікує вузол, який надає ресурси в цьому пулі. Селектор полів можна використовувати для переліку лише обʼєктів ResourceSlice, що належать певному вузлу.
Це поле може використовуватися для обмеження доступу з вузлів до ResourceSlices з тим же іменем вузла. Воно також вказує автомасштабувальникам, що додавання нових вузлів того ж типу, що й старий вузол, може також зробити нові ресурси доступними.
Має бути встановлено точно одне з полів NodeName, NodeSelector, AllNodes або PerDeviceNodeSelection. Це поле є незмінним.
nodeSelector (NodeSelector)
NodeSelector визначає, які вузли мають доступ до ресурсів у пулі, коли цей пул не обмежений до одного вузла.
Має бути використано точно один термін.
Має бути встановлено точно одне з полів NodeName, NodeSelector, AllNodes або PerDeviceNodeSelection.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів міток по набору вузлів; тобто, він представляє логічну операцію OR селекторів, представлених термінами селектора вузлів.
nodeSelector.nodeSelectorTerms ([]NodeSelectorTerm), обовʼязково
Atomic: буде замінено під час злиття
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
nodeSelector.nodeSelectorTerms.matchExpressions ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузлів за мітками вузлів.
nodeSelector.nodeSelectorTerms.matchFields ([]NodeSelectorRequirement)
Atomic: буде замінено під час злиття
Список вимог до селектора вузла за полями вузла.
perDeviceNodeSelection (boolean)
PerDeviceNodeSelection визначає, чи доступ з вузлів до ресурсів у пулі встановлюється на рівні ResourceSlice або на рівні кожного пристрою. Якщо встановлено значення true, кожен пристрій, визначений як ResourceSlice, повинен вказати його індивідуально.
Має бути задано точно одне з значень NodeName, NodeSelector, AllNodes та PerDeviceNodeSelection.
sharedCounters ([]CounterSet)
Atomic: буде замінено під час злиття
SharedCounters визначає список наборів лічильників, кожен з яких має назву та список доступних лічильників.
Імена лічильників SharedCounters повинні бути унікальними в ResourceSlice.
Максимальна кількість лічильників у всіх наборах — 32.
CounterSet визначає іменований набір лічильників, які доступні для використання пристроями, визначеними у ResourceSlice.
Лічильники не можуть бути виділені самі по собі, але на них можуть посилатися пристрої. Коли пристрій виділено, частина лічильників, яку він використовує, більше не буде доступною для використання іншими пристроями.
sharedCounters.counters (map[string]Counter), обовʼязково
Counters визначає набір лічильників для цього CounterSet. Імʼя кожного лічильника має бути унікальним у цьому наборі і має бути DNS-міткою.
Максимальна кількість лічильників у всіх наборах — 32.
Counter описує кількість, повʼязану з пристроєм.
sharedCounters.counters.value (Quantity), обовʼязково
Value визначає, скільки лічильника певного пристрою доступно.
sharedCounters.name (string), обовʼязково
Name визначає імʼя набору лічильників. Це має бути мітка DNS.
ResourceSliceList
ResourceSliceList — колекція класів ResourceSlices.
apiVersion: resource.k8s.io/v1beta2
kind: ResourceSliceList
metadata (ListMeta)
Стандартні метадані списку
items ([]ResourceSlice), обовʼязково
Items is the list of resource ResourceSlices.
Операції
get
отримати вказаний ResourceSlice
HTTP запит
GET /apis/resource.k8s.io/v1beta2/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
pretty (в запиті): string
Відповідь
200 (ResourceSlice): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу ResourceSlice
HTTP запит
GET /apis/resource.k8s.io/v1beta2/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/v1beta2/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/v1beta2/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/v1beta2/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/v1beta2/resourceslices/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя ResourceSlice
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (ResourceSlice): OK
202 (ResourceSlice): Accepted
401: Unauthorized
deletecollection
видалення колекції ResourceSlice
HTTP запит
DELETE /apis/resource.k8s.io/v1beta2/resourceslices
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized
Цю сторінку було стоврено автоматично.
Якщо у вас є наміри надіслати пропозиції щодо неї, додайте згадку, про те що сторінку створено автоматично в описі вашого повідомлення. Зміни мають відбутись всюди в проєкті Kubernetes.