Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

Deckhouse Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.

GPUClass

Короткие имена: gpucls

Область: Cluster
Версия: v1alpha1

Кластерный ресурс, описывающий именованный пул физических GPU и варианты DeviceClass, которые генерируются на его основе и через которые пользователи запрашивают GPU как extended-ресурс.
  • apiVersion
    строка
    Версия API ресурса (например, gpu.deckhouse.io/v1alpha1).
  • kind
    строка
    Тип ресурса. Для этого объекта всегда GPUClass.
  • metadata
    объект
    Стандартные метаданные Kubernetes.
  • spec
    объект
    Описание пула: какие объекты PhysicalGPU в него входят и какие профили партиций и стратегии разделения разрешены.
    • spec.partitionFilter
      объект
      Ограничивает набор профилей партиций, используемых для генерируемых DeviceClass. Имена берутся из возможностей, указанных в статусе PhysicalGPU, и записываются в виде DNS-метки — без точек (например, 1g5gb, а не 1g.5gb).
      • spec.partitionFilter.allow
        массив строк
        Белый список имён, которые разрешено использовать.
      • spec.partitionFilter.deny
        массив строк
        Чёрный список имён, которые использовать нельзя.
    • spec.selector
      объект
      Отбор объектов PhysicalGPU по лейблам. Пустой селектор соответствует всем объектам PhysicalGPU в кластере.
      • spec.selector.matchExpressions
        массив объектов
        Список требований к лейблам. Требования объединяются логическим И.
        • spec.selector.matchExpressions.key
          строка
          Ключ лейбла, к которому применяется требование.
        • spec.selector.matchExpressions.operator
          строка
          Отношение ключа к набору значений. Допустимые операторы: In, NotIn, Exists, DoesNotExist.
        • spec.selector.matchExpressions.values
          массив строк
          Массив значений. Для операторов In и NotIn массив должен быть непустым, для Exists и DoesNotExist — пустым.
      • spec.selector.matchLabels
        объект
        Набор пар {ключ, значение}. Одна пара в matchLabels эквивалентна элементу matchExpressions с оператором In и единственным значением. Требования объединяются логическим И.
    • spec.sharingFilter
      объект
      Ограничивает набор стратегий разделения, используемых для генерируемых DeviceClass. Имена берутся из лейблов PhysicalGPU с префиксом gpu.deckhouse.io/sharing. (например, mps, ts).
      • spec.sharingFilter.allow
        массив строк
        Белый список имён, которые разрешено использовать.
      • spec.sharingFilter.deny
        массив строк
        Чёрный список имён, которые использовать нельзя.
  • status
    объект
    Наблюдаемое состояние GPUClass.
    • status.conditions
      массив объектов
      Условия, отражающие состояние реконсиляции этого GPUClass.
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода условия из одного состояния в другое.
      • status.conditions.message
        строка
        Human-readable сообщение с подробностями о переходе.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
        Значение .metadata.generation, на основании которого было выставлено условие.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Программный идентификатор причины последнего перехода условия.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Состояние условия: True, False или Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.deviceClassNames
      массив строк
      Полный список объектов DeviceClass, сгенерированных для этого GPUClass. Является достоверным источником имён.
    • status.matchingPhysicalGPUCount
      целое число
      Количество объектов PhysicalGPU, попавших под селектор при последней реконсиляции.

PhysicalGPU

Короткие имена: pgpu

Область: Cluster
Версия: v1alpha1

Кластерный ресурс, описывающий физический GPU, обнаруженный агентом на узле: PCI-идентификацию, условия готовности и возможности устройства.
  • apiVersion
    строка
    Версия API ресурса (например, gpu.deckhouse.io/v1alpha1).
  • kind
    строка
    Тип ресурса. Для этого объекта всегда PhysicalGPU.
  • metadata
    объект
    Стандартные метаданные Kubernetes.
  • spec
    объект
    Желаемое состояние (в v1alpha1 не используется, spec пустой).
  • status
    объект
    Набор наблюдаемых характеристик и условий готовности GPU.
    • status.capabilities
      объект
      Снимок возможностей (capability snapshot) устройства (доступен при готовности драйвера, когда DriverReady=True).
      • status.capabilities.architecture
        строка
        Архитектура GPU (например, Hopper, RDNA3, Xe-HPC).
      • status.capabilities.computeAPI
        строка
        Основной вычислительный API устройства: CUDA, ROCm, oneAPI.
      • status.capabilities.computeCapability
        строка
        Строка Compute Capability. Например, 8.0.
      • status.capabilities.memoryMiB
        целое число
        Общий объём видеопамяти в MiB.
      • status.capabilities.partitionSupport
        объект
        Описание возможностей разбиения GPU на разделы (MIG, SPX, SR-IOV).
        • status.capabilities.partitionSupport.profiles
          массив объектов
          Список поддерживаемых профилей разбиения.
          • status.capabilities.partitionSupport.profiles.maxInstances
            целое число
            Максимальное количество экземпляров профиля.
          • status.capabilities.partitionSupport.profiles.memoryMiB
            целое число
            Объём видеопамяти профиля в MiB.
          • status.capabilities.partitionSupport.profiles.name
            строка
            Имя профиля (например, 1g.6gb, spx-half).
          • status.capabilities.partitionSupport.profiles.profileID
            целое число
            Числовой идентификатор профиля.
          • status.capabilities.partitionSupport.profiles.resources
            объект
            Вендор-независимый набор счётчиков ресурсов профиля (например, {"multiprocessors": 14}).
          • status.capabilities.partitionSupport.profiles.sliceCount
            целое число
            Количество слайсов, занимаемых профилем.
        • status.capabilities.partitionSupport.supported
          булевый

          Обязательный параметр

          Признак поддержки разбиения на разделы.
        • status.capabilities.partitionSupport.technology
          строка
          Технология разбиения: MIG, SPX, SR-IOV.
        • status.capabilities.partitionSupport.totalSlices
          целое число
          Общее количество слайсов разбиения на GPU.
      • status.capabilities.powerLimitMaxW
        целое число
        Максимальный поддерживаемый power limit в ваттах.
      • status.capabilities.powerLimitMinW
        целое число
        Минимальный поддерживаемый power limit в ваттах.
      • status.capabilities.productName
        строка
        Название GPU (например, NVIDIA A30).
      • status.capabilities.vendor
        строка
        Идентификатор вендора GPU (например, nvidia, amd, intel).
    • status.conditions
      массив объектов
      Список условий готовности GPU (DriverReady, HardwareHealthy).
      • status.conditions.lastTransitionTime
        строка
        Время последнего перехода условия из одного статуса в другой.
      • status.conditions.message
        строка
        Человекочитаемое сообщение с подробностями о переходе. Может быть пустой строкой.

        Максимальная длина: 32768

      • status.conditions.observedGeneration
        целое число
        Значение .metadata.generation, при котором было установлено условие. Если меньше текущего generation, условие устарело.

        Допустимые значения: 0 <= X

      • status.conditions.reason
        строка
        Программный идентификатор причины последнего перехода условия. Значение в формате CamelCase.

        Длина: 1..1024

        Шаблон: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$

      • status.conditions.status
        строка
        Статус условия — одно из значений True, False, Unknown.

        Допустимые значения: True, False, Unknown

      • status.conditions.type
        строка
        Тип условия в формате CamelCase или foo.example.com/CamelCase.

        Максимальная длина: 316

        Шаблон: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$

    • status.currentState
      объект
      Текущее состояние привязки драйвера и рантайм-параметров (доступно при готовности драйвера).
      • status.currentState.computeAPIVersion
        строка
        Строка версии вычислительного API во время работы.
      • status.currentState.driverVersion
        строка
        Версия драйвера.
      • status.currentState.gpuUUID
        строка
        UUID GPU, сообщаемый драйвером вендора.
      • status.currentState.partition
        объект
        Текущее состояние режима разбиения GPU.
        • status.currentState.partition.mode
          строка
          Текущий режим разбиения, сообщаемый адаптером.
      • status.currentState.powerLimitCurrentW
        целое число
        Текущий power limit в ваттах.
      • status.currentState.powerLimitEnforcedW
        целое число
        Принудительный (enforced) power limit в ваттах.
    • status.driverBinding
      объект
      Наблюдаемая привязка драйвера ядра: сам драйвер, классифицированный режим обслуживания и наблюдаемое состояние управления устройством. Владение полями разделено через Server-Side Apply: driver и mode принадлежат gpu-node-agent, managementState — gpu-controller.
      • status.driverBinding.driver
        строка
        Драйвер ядра, привязанный к устройству в sysfs (например, nvidia, vfio-pci, nvidia-vgpu-vfio или пустая строка, если драйвер не привязан). Считается достоверным источником истины. Владелец — field manager gpu-node-agent.
      • status.driverBinding.managementState
        строка
        Наблюдаемый ответ на вопрос «кто управляет устройством»: модуль (Managed), намеренно выведенное из-под управления и уже освобождённое устройство (Excluded), непреднамеренный orphan (Orphaned), никто (Unclaimed) либо установленного ответа нет вовсе (Unknown). От mode не зависит: режим говорит, к какому драйверу привязано устройство, а это поле — кто им распоряжается. Только Orphaned разрешает reclaim; пока opt-out ожидает освобождения ещё живой привязки, значение остаётся Managed (переход отражается в условии Managed с причиной ExcludedReleasePending), поэтому живая привязка никогда не подлежит reclaim. Unclaimed ставится, когда устройство опознано, привязка в режиме Compute, opt-out не объявлен и ни один claim его не держит: это штатное свободное состояние, и о возможности выделить устройство оно не говорит ничего — решает DRA. Unknown — fail-safe, он держит все случаи без установленного ответа, включая кандидата в orphan на бесхозной passthrough-привязке внутри grace-окна и устройство без живой привязки. Владелец — field manager gpu-controller.

        Допустимые значения: Managed, Excluded, Orphaned, Unclaimed, Unknown

      • status.driverBinding.mode
        строка
        Классифицированный режим обслуживания, выведенный из привязанного драйвера: Compute, Passthrough, Unbound, Unknown. Транспорт из него выводить нельзя. Владелец — field manager gpu-node-agent.

        Допустимые значения: Compute, Passthrough, Unbound, Unknown

    • status.message
      строка
      Человекочитаемое объяснение текущей фазы (phase). Выводится из тех же условий, что и phase, поэтому не является отдельным источником истины, и остаётся пустым, когда объяснять нечего (например, у исправного устройства в фазе Ready). Поле намеренно не машиночитаемое: его нельзя разбирать и нельзя использовать как условие принятия решений. Машиночитаемыми сигналами остаются phase, conditions и driverBinding.managementState. Его также нельзя делать меткой метрики: свободный текст дал бы неограниченную кардинальность. Владелец — field manager gpu-controller.
    • status.nodeInfo
      объект
      Сведения об узле, ОС, ядре и обнаружении bare metal-узла.
      • status.nodeInfo.bareMetal
        булевый
        Признак того, что узел является bare metal.
      • status.nodeInfo.nodeName
        строка
        Имя узла Kubernetes, на котором обнаружен GPU.
    • status.pciInfo
      объект
      PCI-идентификация устройства.
      • status.pciInfo.address
        строка
        Полный PCI-адрес устройства (domain:bus:slot.func). Например, 0000:02:00.0.
      • status.pciInfo.class
        объект
        Описание PCI-класса устройства (base+subclass).
        • status.pciInfo.class.code
          строка
          Код PCI-класса (base+subclass). Например, 0302.
      • status.pciInfo.device
        объект
        Идентификатор PCI устройства.
        • status.pciInfo.device.id
          строка
          PCI device ID (например, 20b7).
      • status.pciInfo.vendor
        объект
        Название вендора устройства.
        • status.pciInfo.vendor.id
          строка
          PCI vendor ID (например, 10de).
    • status.phase
      строка
      Жизненный цикл GPU, вычисляемый контроллером на основе условий: Pending, Initializing, Ready, Reconfiguring, Failed, Lost, Passthrough.

      Допустимые значения: Pending, Initializing, Ready, Reconfiguring, Failed, Lost, Passthrough