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

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

v1.3.2 — 2026-09-23

Кратко: Релиз исправляет запуск воркера node-feature-discovery в стеке device plugin. Режим DRA не затронут.

Ключевые изменения

  • Исправлена ошибка CrashLoopBackOff при запуске node-feature-discovery.
  • Узлы получают лейблы feature.node.kubernetes.io/pci-*. Без них device plugin и gpu-feature-discovery на узел не планировались.

Исправления

  • Воркер node-feature-discovery не запускался
    Контейнер работал от root со снятыми capabilities. Запустить собственный исполняемый файл он при этом не мог. Воркер уходил в CrashLoopBackOff. Узел оставался без лейблов node-feature-discovery. Device plugin и gpu-feature-discovery на такой узел не планировались. Воркер переведён на непривилегированного пользователя модуля.

Что учесть при обновлении

  • Воркер собирает только источники local и pci
    Источники cpu, kernel, system и другие отключены. Собственные NodeFeatureRule, опирающиеся на их признаки, на GPU-узлах перестанут срабатывать. Проверьте свои правила перед обновлением. Лейблы feature.node.kubernetes.io/pci-* не изменились.

v1.3.1 — 2026-09-11

Кратко: Релиз закрывает найденные уязвимости. Поведение модуля не меняется.

Ключевые изменения

  • Исправлены найденные уязвимости (CVE). Поведение модуля не меняется.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

v1.3.0 — 2026-09-04

Кратко: Релиз переводит DRA-режим в статус preview и делает его рекомендуемым способом работы с GPU. Добавлена поддержка карт MetaX. Требование модуля к Kubernetes снижено до 1.33. Улучшена работа с настройкой узлов для работы с GPU. Оптимизирована модель безопасности.

Ключевые изменения

  • Для DRA-режима модуль не меняет настройки кластера, а только проверяет их состояние. Он сообщает, если нужные feature gates не включены. Для DRA-режима нужен Kubernetes 1.34. На Kubernetes 1.33 модуль тоже ставится и работает в режиме device plugin.
  • Проблемы с настройкой GPU больше не блокируют подготовку узла. Узел конвергируется, а неисправность видна в метках узла, метрике и alert. Модуль не делает необратимых изменений на узлах, где DRA работать не сможет.
  • Переработан механизм изоляции разделяемых GPU между namespace. Части разделяемой карты могут использовать только нагрузки внутри одного namespace. Конфликт отклоняется до размещения Pod’а, и планировщик берёт другое устройство. Раньше конфликт появлялся после размещения, и Pod оставался в ContainerCreating.
  • Поддержаны GPU MetaX. Их можно использовать через DRA наравне с NVIDIA. Модуль устанавливает адаптер только на узлы с такими картами.
  • Работать с GPU можно без прав SuperAdmin. Доступ выдаётся штатными ролями DKP, без ручных ClusterRole.

Новый функционал

  • Обнаружение неисправного хост-стека GPU на узле в DRA-режиме
    Проверяются загрузка модуля ядра, соответствие версий модуля ядра и драйвера, работоспособность контейнерного toolkit. Результат публикуется в метках узла node.deckhouse.io/gpu-host-stack-error и node.deckhouse.io/gpu-host-stack-vendor. Он же виден в метрике gpu_node_host_stack_unhealthy{node,vendor,reason} и в alert D8GpuNodeHostStackUnhealthy.
  • Доступ к GPU выдаётся штатными ролями DKP
    Раньше ресурсы модуля не входили ни в одну роль платформы. Ниже уровня SuperAdmin пользователь не мог даже посмотреть список классов GPU. Разработчик со своей ролью в namespace создаёт ResourceClaim и ResourceClaimTemplate. Роль уровня просмотра читает ресурсы модуля и объекты DRA, включая ResourceSlice. Администратор управляет GPUClass и DeviceClass, а также обслуживает карты аннотациями gpu.deckhouse.io/reclaim и gpu.deckhouse.io/unmanaged. Роли поставляются для обеих ролевых моделей DKP. Для текущей модели это шесть кумулятивных ClusterRole d8:user-authz:gpu:<level>. Для экспериментальной — роли администратора инфраструктуры и роли пользователя namespace. Отдельно поставляются d8:gpu:viewer и d8:gpu:deviceclass-editor. Их выдают через ClusterRoleBinding. Они дают доступ к кластерным объектам GPU, который роль пользователя namespace дать не может.
  • Адаптер MetaX в составе DRA-стека
    Добавлена возможность использовать GPU MetaX для рабочих нагрузок. Поддерживаются вендорные правила валидации запросов.
  • Пространство имён модуля GPU подготовлено к политике Pod Security Standards restricted
    Каждый компонент, которому необходимо исключение, получил отдельный SecurityPolicyException. Общее ослабление требований к политике безопасности на всё пространство больше не требуется.

Улучшения

  • Проверка готовности DRA feature gates перед развёртыванием
    При dra.enabled=true стек разворачивается только со всеми требуемыми gates. Готовность определяется по рантайм-состоянию kube-apiserver, а не по версии Kubernetes. При нехватке gates выставляются condition FeatureGatesReady, метрика gpu_dra_feature_gate_missing и alert. Проверка ограничивает только первое развёртывание стека. Уже развёрнутый стек не удаляется, а транзиентная недоступность gates не останавливает нагрузки. Так бывает при rolling-upgrade control-plane или чтении с другой реплики apiserver. В этом случае выставляется только alert.
  • Однозначное состояние карты в режиме VFIO-passthrough
    Карта, отданная виртуальной машине, больше не остаётся в фазе Initializing. В PhysicalGPU.status появилось поле driverBinding, а сама карта переходит в фазу Passthrough. Карту на vfio-pci без заявки модуль помечает как Orphaned и поднимает alert D8GPUPhysicalGPUOrphaned. Вернуть карту вычислительному драйверу или скрыть её от модуля можно аннотациями gpu.deckhouse.io/reclaim и gpu.deckhouse.io/unmanaged.
  • Необратимая часть подготовки узла ограничена
    Это правка параметров загрузки ядра для IOMMU и привязка карты к vfio-pci. При первом включении с подтверждённо отключёнными gates они не применяются. Параметры загрузки ядра меняются только на узле с GPU поддерживаемого вендора. Раньше параметры правились и перезагрузка запрашивалась на каждом bare-metal узле группы, даже без GPU. Обратимые шаги применяются без изменений: containerd, sysctl, метки.
  • Проверки узла разделены по вендорам GPU
    Выполняются только проверки вендоров, найденных на PCI-шине. Список поддерживаемых вендоров стал единым источником данных для ConfigMap gpu-supported-vendors и скрипта проверки узла.

Исправления

  • DRA-режим: удалён mutating webhook resourceclaimnamespace.gpu.deckhouse.io
    Он дописывал CEL-селектор в spec объектов ResourceClaim и ResourceClaimTemplate. Этот spec иммутабелен. Отрендеренный манифест мог разойтись с сохранённым объектом. Повторное применение отвергалось с ошибкой spec: field is immutable. Это касалось Helm-релиза, GitOps-контроллера и module applier.
  • DRA-режим: устранена проблема с параметром settings.dra.allowCrossNamespaceSharing
    Параметр не влиял на поведение размещения. Значение доставлялось только в gpu-controller и влияло лишь на регистрацию вебхука. Компонент, применяющий политику, его не получал. Шаблоны DaemonSet читали настройку не по документированному пути. На узел передавалось значение по умолчанию.
  • Требование модуля к Kubernetes снижено с 1.34 до 1.33
    Порог 1.34 относится к DRA-режиму. В режиме device plugin модуль ставится на кластер 1.33.
  • Проверка GPU-узла больше не прерывает настройку узла
    Шаг выполняется рано, до настройки kubelet. При отсутствии драйвера или контейнерного toolkit он завершался с ошибкой, и bashible прекращал настройку узла целиком. Шаг всегда завершается успешно, а результат виден в метках узла.
  • Устранено ложное срабатывание alert D8GPUControlPlaneControllerTargetAbsent
    Правила и дашборды DRA-стека не применяются на кластерах с device plugin. Раньше alert срабатывал там, где DRA-контроллера и не должно быть, а дашборды дублировались.
  • Исправлены права компонентов DRA-стека
    Контроллер получил доступ к тому API событий, в который пишет. Доступ к ConfigMap сужен до нужных объектов.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE). Обновлены компоненты модуля и образы обоих стеков.

Несовместимые изменения

  • Модуль больше не включает DRA feature gates
    Hook и NodeGroupConfiguration, выполнявшие это, удалены. Без требуемых gates при dra.enabled=true DRA-стек не развернётся. Модуль сообщит о нехватке через condition, метрику и alert.

Что учесть при обновлении

  • Перед обновлением с dra.enabled=true проверьте требуемые DRA feature gates
    Без них DRA-стек после обновления не развернётся. Список gates и порог Kubernetes 1.34 приведены в разделе «Предварительные требования для DRA-режима». Уже развёрнутый стек обновление не удаляет.
  • Изоляция разделяемых GPU проверяется на узле, а не в admission
    Отказ приходит до размещения Pod’а. Он виден как condition BindingFailed=True с reason NamespaceConflict в ResourceClaim.status.devices. Планировщик выбирает другое устройство. Раньше конфликт появлялся на NodePrepareResources, уже после размещения. Выглядело это как длительное состояние ContainerCreating. Ограничение действует на уровне placement. Разные MIG-партиции одной карты остаются доступны разным namespace. Диагностику ищите в ResourceClaim.status.devices, а не в логах admission.
  • Ранее созданные ResourceClaimTemplate с дописанным селектором нужно пересоздать
    Удаление вебхука их не исправляет, их spec иммутабелен. Пересоздайте такие объекты их владельцем. Для Helm-релиза: удалите объект и выполните helm upgrade. Иначе состояние ManifestsApplyFailed сохранится.
  • На узлах с неисправным хост-стеком GPU появятся alerts D8GpuNodeHostStackUnhealthy
    Так бывает при несовпадении версий nvidia-container*. Так бывает и при модуле DKMS, не собранном под текущее ядро. Это обнаружение уже существующих неисправностей. Конвергенция таких узлов не блокируется. С них снимается признак готовности node.deckhouse.io/gpu-setup-complete. Компоненты GPU-стека на такие узлы не размещаются.
  • Перед выключением модуля верните карты из VFIO-passthrough вычислительному драйверу
    Используйте аннотацию gpu.deckhouse.io/reclaim. Выключение модуля не снимает привязку драйвера. Карта на vfio-pci останется на нём и после удаления модуля. Для возврата потребуется перезагрузка узла.

Известные ограничения

  • MetaX: только карта целиком
    Адаптер MetaX поддерживает выделение карты целиком. Разделение на партиции и совместное использование доступны для NVIDIA. Заявка с долей карты MetaX отклоняется на этапе подготовки.
  • Состояние хост-стека GPU не пересчитывается непрерывно
    Проверка выполняется при bootstrap узла, смене конфигурации и перезагрузке. Неисправность, возникшая между этими моментами, попадёт в метки и alert только на следующем прогоне.

Документация

  • Документация модуля переработана
    Обзор, настройки, архитектура, FAQ, использование и глоссарий согласованы между собой. Режимы DRA и device plugin описаны как взаимоисключающие. DRA описан как рекомендуемый режим. Он в статусе Preview и включается явно. Без дополнительной настройки работает режим device plugin. Добавлены страницы: глоссарий, описание GPUClass, набор манифестов, обучающий сценарий и раздел об использовании. Страница с примерами удалена, её содержание перенесено в новые разделы. В разделе «Предварительные требования для DRA-режима» описаны оба порога Kubernetes и шесть требуемых feature gates. В FAQ добавлена диагностика ситуации «GPU-нагрузки не работают при установленных драйвере и toolkit».
  • Справочник ресурсов приведён в соответствие со схемой
    Добавлено русское описание GPUClass. Описание PhysicalGPU обновлено по текущей схеме.

Зависимости

  • Требования к платформе: Deckhouse >= 1.75, Kubernetes >= 1.33. Прежний порог Kubernetes — 1.34. DRA-режим по-прежнему требует Kubernetes >= 1.34. Это проверяется в рантайме.

v1.2.8 — 2026-08-31

Кратко: Сервисный релиз линии 1.2.x с обновлениями метаданных безопасности и зависимостей. Поведение развёрнутого GPU-стека не меняется.

Ключевые изменения

  • Отчётность по безопасности образов модуля стала точнее: образы могут поставлять VEX-метаданные для уязвимостей, которые заведомо не затрагивают поставляемые бинарные файлы.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).
  • Добавлены VEX-метаданные для уязвимостей, недостижимых в поставляемых бинарных файлах модуля, чтобы уменьшить ложные срабатывания проверок уязвимостей для затронутых образов.

v1.2.7 — 2026-08-31

Кратко: Исправлено объявление корневого типа в OpenAPI-схеме конфигурации модуля. Deckhouse валидирует значения модуля gpu по схеме.

Ключевые изменения

  • Валидация значений конфигурации модуля gpu работает корректно. Корень OpenAPI-схемы объявлен как объект. Этого требует Deckhouse.

Исправления

  • Исправлено объявление корневого типа в OpenAPI-схеме конфигурации модуля. Корень объявлен как объект. Deckhouse проверяет значения модуля gpu по схеме. Раньше он считал корень схемы неизвестным полем.

v1.2.6 — 2026-08-30

Кратко: Технический релиз линии 1.2.x. Обновление меняет только механику сборки образов и не влияет на поведение развёрнутого GPU-стека.

Ключевые изменения

  • Технический релиз: разворачиваемые манифесты, набор образов и версии компонентов не меняются, поэтому действий от оператора не требуется.

v1.2.5 — 2026-08-29

Кратко: Сервисный релиз линии 1.2.x с обновлениями безопасности. Поведение GPU-нагрузок не меняется, действий от оператора не требуется.

Ключевые изменения

  • Исправлены найденные уязвимости в образах модуля без изменения разворачиваемых GPU-стеков и их конфигурационного контракта.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

v1.2.4 — 2026-07-17

Кратко: Технический релиз линии 1.2.x.

Ключевые изменения

  • Технический релиз: изменений, влияющих на эксплуатацию, нет. Обновление безопасно и не требует действий.

v1.2.3 — 2026-07-17

Кратко: Обновление безопасности линии 1.2.x.

Ключевые изменения

  • Устранены найденные уязвимости в поставляемых образах.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

v1.2.2 — 2026-07-17

Кратко: Технический релиз линии 1.2.x.

Ключевые изменения

  • Технический релиз: изменений, влияющих на эксплуатацию, нет. Обновление безопасно и не требует действий.

v1.2.1 — 2026-07-15

Кратко: Исправления VFIO-passthrough, работы с GPUClass и метрики утилизации GPU.

Ключевые изменения

  • VFIO-passthrough работает корректно: устройство привязывается к нагрузке.
  • Метрика утилизации GPU публикуется — панели мониторинга показывают нагрузку на карты.

Исправления

  • Исправлена привязка устройств для VFIO-passthrough.
  • Исправлена работа с ресурсом GPUClass.
  • Исправлена метрика утилизации GPU.

v1.2.0 — 2026-07-01

Кратко: Появился ресурс GPUClass — декларативное описание классов GPU для DRA-стека.

Ключевые изменения

  • Добавлен ресурс GPUClass (gpuclasses.gpu.deckhouse.io): классы GPU описываются декларативно, и нагрузка запрашивает класс, а не конкретную карту.
  • Выбор устройства для DRA-заявки стал предсказуемым: неполные варианты размещения больше не участвуют в выборе.

Новый функционал

  • Ресурс GPUClass (gpuclasses.gpu.deckhouse.io). Это декларативное описание классов GPU для DRA-стека.

Исправления

  • Устранены конфликты размещения DRA-заявок: синтетические (неполные) варианты размещения больше не учитываются при выборе устройства.
  • Исправлено проставление владельца (ownership) для ресурсов PhysicalGPU. Объекты больше не остаются бесхозными.

v1.1.2 — 2026-06-11

Кратко: Изоляция DRA-нагрузок от невыделенных устройств узла и исправление имён дашбордов.

Ключевые изменения

  • Запрошенные через DRA GPU больше не пересекаются с невыделенными устройствами узла. Нагрузка не может задеть карту, которая ей не выдана.

Исправления

  • Изоляция DRA-нагрузок: запрошенные через DRA GPU больше не пересекаются с невыделенными устройствами на узле.
  • Исправлены имена дашбордов мониторинга — дашборды находятся в Grafana под ожидаемыми названиями.

v1.1.1 — 2026-06-10

Кратко: Совместное использование GPU в DRA-режиме (MPS и Time-Slicing), автоматическая переконфигурация MIG с перезагрузкой узла и поддержка VFIO-passthrough.

Ключевые изменения

  • В DRA-режиме появилось совместное использование GPU: режимы MPS и Time-Slicing включаются частичным запросом ресурса, без ручной настройки узла.
  • Переконфигурация MIG с перезагрузкой узла выполняется автоматически и согласованно. Оператору не нужно вручную вытеснять нагрузки и останавливать обращения к драйверу.
  • Поддержан VFIO-passthrough: GPU можно целиком передать виртуальной машине.
  • Нагрузка больше не видит внутри контейнера чужие GPU узла. Исправление важно для узлов с несколькими картами.

Новый функционал

  • Совместное использование GPU для DRA-нагрузок в режимах MPS и Time-Slicing. Частичный запрос ресурса (sharePercent) автоматически включает совместное использование физической карты.
  • Автоматическая оркестрация переконфигурации MIG с перезагрузкой узла. Узел согласованно выводится из-под нагрузки. Обращения к GPU-драйверу и DCGM ставятся на паузу на время repartition. Вмешательство оператора не требуется.
  • Поддержка VFIO-passthrough для GPU.

Исправления

  • Видимость GPU внутри контейнера ограничена только выделенными устройствами. Это актуально на узлах с несколькими GPU. Раньше нагрузка видела там все карты.
  • Для каждого выделения возвращаются корректные идентификаторы CDI. Это важно для нагрузок с несколькими устройствами и для сценариев sharing и partitioning.
  • Восстановление подготовки устройств после сбоев. «Зависшие» завершённые заявки очищаются, ошибки привязки типизированы. Повтор выполняется корректно.
  • Добавлены метрики, которых не было на дашборде GPU.

Документация

  • Добавлены базовые сценарии использования GPU — от эксклюзивного выделения до совместного использования и MIG.

v1.1.0 — 2026-05-22

Кратко: Добавлен DRA-стек (Dynamic Resource Allocation) как альтернатива стеку device plugin. Минимальная версия Kubernetes для модуля поднята до 1.34.

Ключевые изменения

  • Появился DRA-стек (Dynamic Resource Allocation). Он включается опцией dra.enabled=true. GPU выделяются через ResourceClaim, а не через расширенные ресурсы узла.
  • Поведение по умолчанию не меняется. При dra.enabled=false разворачивается стек device plugin, как в 1.0.x.
  • Минимальная версия Kubernetes для модуля поднята с 1.32 до 1.34. На более старых кластерах модуль установить или обновить нельзя.

Новый функционал

  • DRA-режим включается опцией dra.enabled=true. Вместо стека на базе NVIDIA GPU Operator модуль разворачивает компоненты gpu-controller, gpu-node-agent, dra-plugin и nvidia-adapter. GPU узлов описываются ресурсом PhysicalGPU.

Исправления

  • Улучшена логика конфигурации MIG (mig-parted), добавлена поддержка ОС со старой версией glibc.
  • Исправлен интервал повторных попыток при настройке MIG. При временной неготовности карты настройка больше не забрасывается.
  • Откачена конфигурация automount, приводившая к избыточным правам у подов стека.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

Несовместимые изменения

  • Минимальная версия Kubernetes для модуля — 1.34, была 1.32. На кластерах 1.32 и 1.33 установка и обновление модуля будут отклонены проверкой требований.

Что учесть при обновлении

  • Перед обновлением убедитесь, что кластер на Kubernetes 1.34 или новее. Если кластер старее, оставайтесь на линии 1.0.x. Она продолжает получать исправления и обновления безопасности.
  • Включайте DRA-режим осознанно. Делайте это на новых установках или после проверки на тестовом кластере. Опция dra.enabled=true заменяет весь GPU-стек узла, а не дополняет его.

Зависимости

  • Требования к платформе: Deckhouse >= 1.75, Kubernetes >= 1.34 (было >= 1.32).

v1.0.4 — 2026-06-10

Кратко: Технический релиз линии сопровождения 1.0.x.

Ключевые изменения

  • Технический релиз: изменений, влияющих на эксплуатацию, нет. Обновление безопасно и не требует действий.

v1.0.3 — 2026-06-02

Кратко: Обновление безопасности линии сопровождения 1.0.x.

Ключевые изменения

  • Устранены найденные уязвимости в поставляемых образах.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

v1.0.2 — 2026-05-14

Кратко: Исправления конфигурации MIG, в том числе на ОС со старой версией glibc, и устранение найденных уязвимостей.

Ключевые изменения

  • Конфигурация MIG применяется корректно на ОС со старой версией glibc. Раньше на таких узлах разбиение карты не доводилось до конца.
  • Устранены найденные уязвимости в поставляемых образах.

Исправления

  • Улучшена логика конфигурации MIG (mig-parted), добавлена поддержка ОС со старой версией glibc.
  • Исправлен скрипт nvidia-mig-manager. Из-за него разбиение карты могло не применяться.

Обновления безопасности

  • Исправлены найденные уязвимости (CVE).

v1.0.1 — 2026-04-17

Кратко: Технический релиз линии сопровождения 1.0.x.

Ключевые изменения

  • Технический релиз: изменений, влияющих на эксплуатацию, нет. Обновление безопасно и не требует действий.

v1.0.0 — 2026-04-01

Кратко: Первый релиз модуля gpu: запуск и эксплуатация нагрузок на NVIDIA GPU в Deckhouse Kubernetes Platform на стеке device plugin.

Ключевые изменения

  • Модуль gpu доступен для эксплуатации. GPU-узлы включаются секцией spec.gpu в целевом NodeGroup. После этого модуль разворачивает на них стек device plugin на базе NVIDIA GPU Operator.
  • Поддержаны три режима выделения GPU: эксклюзивный, Time-Slicing и MIG (Multi-Instance GPU).
  • Мониторинг GPU через DCGM с готовыми дашбордами Grafana работает из коробки.

Новый функционал

  • Поддержка MIG (Multi-Instance GPU): физическая карта делится на изолированные партиции, каждая выдаётся нагрузке как отдельное устройство.
  • Мониторинг GPU через DCGM и DCGM-exporter: метрики утилизации, температуры и памяти доступны в Prometheus и на дашбордах Grafana.
  • Автоматическое обнаружение узлов с GPU через Node Feature Discovery — вручную размечать узлы не требуется.

Зависимости

  • Требования к платформе: Deckhouse >= 1.75, Kubernetes >= 1.32.
  • Компоненты стека device plugin в поставке. NVIDIA device plugin 0.17.4, Node Feature Discovery 0.17.3, NVIDIA Container Toolkit 1.18.2. DCGM 4.2.3, DCGM-exporter 4.2.3, nvidia-mig-manager 0.12.3.