ResourceSlice v1alpha3

ResourceSlice представляє один або декілька ресурсів у пулі подібних ресурсів, керованих спільним драйвером.

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

    pretty

Відповідь

200 (ResourceSlice): OK

401: Unauthorized

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

HTTP запит

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

Параметри

Відповідь

200 (ResourceSliceList): OK

401: Unauthorized

create створення ResourceSlice

HTTP запит

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

Параметри

Відповідь

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    pretty

Відповідь

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

    dryRun

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

    fieldManager

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

    fieldValidation

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

    force

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

    pretty

Відповідь

200 (ResourceSlice): OK

201 (ResourceSlice): Created

401: Unauthorized

delete видалення ResourceSlice

HTTP запит

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

Параметри

Відповідь

200 (ResourceSlice): OK

202 (ResourceSlice): Accepted

401: Unauthorized

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

HTTP запит

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

Параметри

Відповідь

200 (Status): OK

401: Unauthorized

Змінено September 06, 2024 at 4:52 PM PST: upstream sync (275eaebff0)