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