DeviceTaintRule v1alpha3
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
DeviceTaintRule
DeviceTaintRule додає одну позначку taint до всіх пристроїв, які відповідають селектору. Це має той самий ефект, як якби позначку taint було вказано безпосередньо в ResourceSlice драйвером DRA.
apiVersion: resource.k8s.io/v1alpha3
kind: DeviceTaintRule
metadata (ObjectMeta)
Стандартні метадані обʼєкта
spec (DeviceTaintRuleSpec), обовʼязково
Spec визначає селектор та одну позначку taint.
Зміна spec автоматично збільшує номер metadata.generation.
DeviceTaintRuleSpec
DeviceTaintRuleSpec визначає селектор та одну позначку taint.
taint (DeviceTaint), обовʼязково
Позначка taint, яку буде додано до відповідних пристроїв.
Пристрій, до якого прикріплено цей taint, має «вплив» на будь-яку заявку, яка не толерує taint, і, через заявку, на podʼи, що використовують цю заявку.
taint.effect (string), обовʼязково
Вплив taint на заявки, які не толерують taint, а через такі заявки і на podʼи, які їх використовують. Допустимими ефектами є NoSchedule та NoExecute. PreferNoSchedule, що використовується для вузлів, тут не діє.
taint.key (string), обовʼязково
Ключ taint може бути застосований до пристрою. Має бути імʼям мітки.
taint.timeAdded (Time)
TimeAdded представляє час коли taint було додано. Додається автоматично під час створення або оновлення, якщо не встановлено..
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
taint.value (string)
Значення відповідного ключа taint. Має бути значення мітки.
deviceSelector (DeviceTaintSelector)
DeviceSelector визначає, до якого пристрою (пристроїв) буде застосовано taint. Для того, щоб пристрій було знайдено, мають бути виконані всі критерії селектора. Порожній селектор відповідає всім пристроям. Без селектора не буде знайдено жодного пристрою.
Селектор DeviceTaintSelector визначає, до якого пристрою (пристроїв) застосовується правило DeviceTaintRule. Порожній селектор відповідає всім пристроям. Без селектора не буде знайдено жодного пристрою.
deviceSelector.device (string)
Якщо задано значення device, буде обрано лише пристрої з такою назвою. Це поле відповідає slice.spec.devices[].name.
Для уникнення двозначності може знадобитися вказати також драйвер і пул, але це не є обовʼязковим.
deviceSelector.deviceClassName (string)
Якщо задано DeviceClassName, селектори, визначені у цьому полі, повинні задовольняти пристрій, який буде вибрано. Це поле відповідає class.metadata.name.
deviceSelector.driver (string)
Якщо задано driver, буде вибрано лише пристрої з цим драйвером. Це поле відповідає slice.spec.driver.
deviceSelector.pool (string)
Якщо задано pool, буде вибрано лише пристрої з цього пулу.
Також слід вказати назву драйвера, щоб уникнути неоднозначності, коли різні драйвери використовують однакову назву пулу, але це не є обовʼязковим, оскільки вибір пулів з різних драйверів також може бути корисним, наприклад, коли драйвери з локальними пристроями вузла використовують назву вузла як назву пулу.
deviceSelector.selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Selectors містить ті самі критерії відбору, що і ResourceClaim. Наразі підтримуються CEL-вирази. Всі ці селектори повинні бути задоволені.
DeviceSelector повинен мати рівно одне встановлене поле.
deviceSelector.selectors.cel (CELDeviceSelector)
CEL містить вираз CEL для обраного пристрою.
CELDeviceSelector містить CEL-вираз для вибору пристрою.
deviceSelector.selectors.cel.expression (string), обовʼязково
Expression — це CEL-вираз, який оцінює один пристрій. Він повинен мати значення true, якщо пристрій, що розглядається, задовольняє бажаним критеріям, і false, якщо не задовольняє. Будь-який інший результат є помилкою і призводить до переривання розподілу пристроїв.
На вхід виразу подається обʼєкт з іменем "device", який має наступні властивості:
- driver (string): імʼя драйвера, який визначає цей пристрій.
- attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінює обʼєкт з усіма атрибутами, що мають префікс "dra.example.com").
- capacity (map[string]object): потужності пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який має два атрибути "model" і "ext.example.com/family" та одну одиницю "modules". Вхідні дані для цього виразу матимуть такі поля:
device.driver device.attributes["dra.example.com"].model device.attributes["ext.example.com"].family device.capacity["dra.example.com"].modules
Поле device.driver можна використовувати для перевірки наявності певного драйвера або як високорівневу передумову (тобто ви хочете розглядати пристрої лише з цим драйвером), або як частину багатокомпонентного виразу, призначеного для розгляду пристроїв з різними драйверами.
Тип значення кожного атрибута визначено у визначенні пристрою, і користувачі, які пишуть ці вирази, повинні звернутися до документації до своїх конкретних драйверів. Тип значення кожної одиниці — Quantity (кількість).
Якщо невідомий префікс використовується для пошуку в device.attributes або device.capacity, буде повернуто порожній map. Будь-яке посилання на невідоме поле призведе до помилки оцінки та переривання розподілу.
Надійний вираз повинен перевіряти існування атрибутів перед тим, як посилатися на них.
Для зручності використання увімкнено функцію cel.bind(), яку можна використовувати для спрощення виразів, що звертаються до декількох атрибутів з одним доменом. Наприклад
cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool)
Довжина виразу повинна бути меншою або дорівнювати 10 Ki. Вартість його обчислення також обмежена, виходячи з передбачуваної кількості логічних кроків.
DeviceTaintRuleList
DeviceTaintRuleList є колекцією DeviceTaintRules.
apiVersion: resource.k8s.io/v1alpha3
kind: DeviceTaintRuleList
metadata (ListMeta)
Стандартні метадані списку
items ([]DeviceTaintRule), обовʼязково
Items є переліком DeviceTaintRules.
Операції
get
отримати вказаний DeviceTaintRule
HTTP Запит
GET /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя DeviceTaintRule
pretty (в запиті): string
Відповідь
200 (DeviceTaintRule): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу DeviceTaintRule
HTTP Запит
GET /apis/resource.k8s.io/v1alpha3/devicetaintrules
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (DeviceTaintRuleList): OK
401: Unauthorized
create
створення DeviceTaintRule
HTTP Запит
POST /apis/resource.k8s.io/v1alpha3/devicetaintrules
Параметри
body: DeviceTaintRule, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (DeviceTaintRule): OK
201 (DeviceTaintRule): Created
202 (DeviceTaintRule): Accepted
401: Unauthorized
update
заміна вказаного DeviceTaintRule
HTTP Запит
PUT /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя the DeviceTaintRule
body: DeviceTaintRule, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (DeviceTaintRule): OK
201 (DeviceTaintRule): Created
401: Unauthorized
patch
часткове оновлення вказаного DeviceTaintRule
HTTP Запит
PATCH /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя DeviceTaintRule
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (DeviceTaintRule): OK
201 (DeviceTaintRule): Created
401: Unauthorized
delete
видалення DeviceTaintRule
HTTP Запит
DELETE /apis/resource.k8s.io/v1alpha3/devicetaintrules/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя DeviceTaintRule
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (DeviceTaintRule): OK
202 (DeviceTaintRule): Accepted
401: Unauthorized
deletecollection
видалення колекції DeviceTaintRule
HTTP Запит
DELETE /apis/resource.k8s.io/v1alpha3/devicetaintrules
Параметри
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.