Как перестать страдать при настройке GPU в Kubernetes
Помните, как раньше выглядела подготовка узла с видеокартой для кластера? Сначала ставим чистую ОС, потом мучительно подбираем версию драйвера NVIDIA, которая не отвалится при обновлении ядра. Следом идут CUDA, контейнерный рантайм, плагины для Kubernetes... А если у вас таких узлов десять? А если нужно быстро масштабироваться в облаке? Ручная настройка превращается в кошмар, где одна опечатка в конфиге заставляет тратить часы на дебаг.
Разработчики из NVIDIA, кажется, тоже устали от этого процесса и выкатили gpu-operator. Это инструмент, который берет на себя всю «грязную» работу по подготовке инфраструктуры для машинного обучения или высокопроизводительных вычислений.

Зачем это нужно админам и разработчикам
Основная идея проекта проста: GPU-узлы должны управляться так же легко, как и обычные узлы с CPU. Вам больше не нужно готовить специальные «золотые образы» дисков с предустановленным софтом. Вы просто берете стандартный образ ОС, добавляете узел в кластер, а всё остальное доставит оператор.
Интересно то, что оператор запускает всё (вплоть до драйверов видеокарты) внутри контейнеров. Это позволяет обновлять компоненты стека без перезагрузки всей системы, просто перезапуская нужные поды.
Что внутри коробки
NVIDIA GPU Operator — это не просто установщик драйверов. Он управляет целым набором компонентов:
- NVIDIA Driver. Автоматическая установка и конфигурация нужной версии драйвера.
- Kubernetes Device Plugin. Пробрасывает видеокарты в планировщик, чтобы вы могли указывать
resources: limits: nvidia.com/gpuв своих манифестах. - NVIDIA Container Runtime. Прослойка, которая позволяет контейнерам «видеть» железо.
- DCGM (Data Center GPU Manager). Если вы используете Prometheus и Grafana для мониторинга, этот компонент станет вашим лучшим другом. Он собирает детальные метрики по загрузке памяти, температуре и энергопотреблению GPU.
- Node Labelling. Оператор сам вешает на узлы нужные метки (например, тип видеокарты или объем памяти), что упрощает настройку NodeSelector.
Как запустить за пять минут
Если у вас уже есть готовый Kubernetes-кластер и Helm, установка сводится к паре команд. Честно говоря, дольше будет скачиваться образ драйвера, чем длиться сама настройка.
Сначала добавим репозиторий:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia \
&& helm repo update
Затем ставим сам оператор:
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator
После этого в пространстве имен gpu-operator начнут подниматься поды. Не пугайтесь, их будет много: по одному для каждого компонента стека. Если всё прошло успешно, ваши GPU-узлы станут видны в кластере как полноценные ресурсы.
Когда стоит использовать этот подход
Я часто вижу, как в небольших проектах всё настраивают руками на одном-двух серверах. Это работает до первого обновления системы. GPU Operator особенно раскрывается в двух сценариях.
Первый — это облака. Когда вы настраиваете Cluster Autoscaler, новые узлы появляются и исчезают динамически. Вы не можете каждый раз заходить по SSH и ставить драйверы. Оператор делает этот процесс полностью прозрачным.
Второй сценарий — эксплуатация на собственном железе (on-premise). Если у вас парк серверов с разными поколениями видеокарт, оператор сам разберется, что и куда устанавливать, опираясь на метаданные железа.
На что обратить внимание
Проект активно развивается, и в планах у команды NVIDIA — поддержка RHEL 10 и интеграция с KubeVirt для запуска виртуальных машин с пробросом GPU. Также они работают над механизмом DRA (Dynamic Resource Allocation), который в будущем должен сделать распределение ресурсов еще гибче.
Стоит ли тащить это к себе? Если у вас больше двух серверов с GPU или вы планируете масштабироваться — однозначно да. Это избавляет от огромного пласта инфраструктурных проблем и позволяет сосредоточиться на коде моделей, а не на версии ядра Linux.
Для начала советую заглянуть в их официальную документацию, там подробно расписаны требования к версиям Kubernetes и поддерживаемым дистрибутивам.