DeviceClass
apiVersion: resource.k8s.io/v1
import "k8s.io/api/resource/v1"
DeviceClass
DeviceClass — ресурс, предоставляемый поставщиком или администратором, который содержит конфигурацию устройств и селекторы. На него можно ссылаться в запросах устройств заявки, чтобы применить эти предварительные настройки. Область действия — кластер.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлён. В CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataObjectMeta |
Стандартные метаданные объекта |
spec *DeviceClassSpec |
Spec определяет, что можно выделить и как это настроить. Это поле можно изменять. Потребители должны быть готовы к изменению классов в любое время — как вследствие их обновления, так и замены. Выделение ресурсов для заявок выполняется один раз на основе классов в том состоянии, в котором они находились на момент выделения. Изменение spec автоматически увеличивает значение metadata.generation. |
DeviceClassSpec
DeviceClassSpec используется в [DeviceClass] для определения того, что можно выделить и как это настроить.
| Поле | Описание |
|---|---|
configDeviceClassConfiguration array |
Config определяет параметры конфигурации, применяемые к каждому устройству, заявленному через этот класс. Некоторые классы потенциально могут обслуживаться несколькими драйверами, поэтому каждый экземпляр конфигурации поставщика применяется ровно к одному драйверу. Они передаются драйверу, но не учитываются при выделении ресурсов для заявки. |
extendedResourceNamestring |
ExtendedResourceName — имя расширенного ресурса для устройств этого класса. Устройства этого класса можно использовать для удовлетворения запросов пода на расширенные ресурсы. Оно имеет тот же формат, что и имя расширенного ресурса пода. Оно должно быть уникальным среди всех классов устройств в кластере. Если два класса устройств имеют одинаковое имя, для удовлетворения запросов пода на расширенные ресурсы будет выбран класс, созданный позже. Если два класса созданы одновременно, будет выбран класс с именем, которое первым идёт при лексикографической сортировке. Это поле бета-версии. |
selectorsDeviceSelector array |
Каждый селектор должен соответствовать устройству, заявленному через этот класс. |
DeviceClassList
DeviceClassList — коллекция классов.
| Поле | Описание |
|---|---|
apiVersionstring |
APIVersion определяет версионированную схему этого представления объекта. Серверы должны преобразовывать распознанные схемы в последнее внутреннее значение и могут отклонять нераспознанные значения. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources |
items *DeviceClass array |
Items — список классов ресурсов. |
kindstring |
Kind — строковое значение, представляющее ресурс REST, который представляет этот объект. Серверы могут определить его по конечной точке, на которую клиент отправляет запросы. Не может быть обновлён. В CamelCase. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds |
metadataListMeta |
Стандартные метаданные списка |
CELDeviceSelector
CELDeviceSelector содержит выражение 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): ёмкости устройства, сгруппированные по префиксу. - allowMultipleAllocations (bool): свойство устройства allowMultipleAllocations (v1.34+ при включённой функции DRAConsumableCapacity). Пример: рассмотрим устройство с 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 возвращается пустая карта. Любая ссылка на неизвестное поле приводит к ошибке вычисления и прерыванию выделения ресурсов. Надёжное выражение должно проверять наличие атрибутов перед обращением к ним. Для удобства использования доступна функция cel.bind(), с помощью которой можно упростить выражения, обращающиеся к нескольким атрибутам с одним и тем же доменом. Например: cel.bind(dra, device.attributes["dra.example.com"], dra.someBool && dra.anotherBool) При включённом функциональном переключателе DRAListTypeAttributes доступен вспомогательный метод includes(), который работает как со скалярными атрибутами, так и с атрибутами типа «список». Он был добавлен для обеспечения плавного перехода от скалярных атрибутов к атрибутам типа «список» при сохранении простоты выражений CEL. Например: device.attributes["dra.example.com"].models.includes("some-model") Длина выражения должна быть не более 10 Ki. Стоимость его вычисления также ограничена на основе предполагаемого числа логических шагов. |
DeviceClassConfiguration
DeviceClassConfiguration используется в DeviceClass.
| Поле | Описание |
|---|---|
opaqueOpaqueDeviceConfiguration |
Opaque предоставляет параметры конфигурации, специфичные для драйвера. |
DeviceSelector
В DeviceSelector должно быть задано ровно одно поле.
| Поле | Описание |
|---|---|
celCELDeviceSelector |
CEL содержит выражение CEL для выбора устройства. |
OpaqueDeviceConfiguration
OpaqueDeviceConfiguration содержит параметры конфигурации для драйвера в формате, определяемом поставщиком драйвера.
| Поле | Описание |
|---|---|
driver *string |
Driver используется для определения того, какому плагину kubelet необходимо передать эти параметры конфигурации. Политика допуска, предоставленная разработчиком драйвера, может использовать это поле, чтобы решить, нужно ли проверять параметры. Значение должно быть DNS-поддоменом и должно оканчиваться DNS-доменом, принадлежащим поставщику драйвера. Следует использовать только символы нижнего регистра. |
parameters * |
Parameters могут содержать произвольные данные. Разработчик драйвера отвечает за их проверку и версионирование. Как правило, данные включают идентификацию типа и версию ("kind" + "apiVersion" для типов Kubernetes) с преобразованием между разными версиями. Размер исходных данных должен быть не более 10 Ki. |
© 2026 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2026 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/resource/device-class-v1/