Kubernetes сам по себе не умеет обнаруживать GPU.
Он полагается на device plugin’ы, которые запускаются как DaemonSet’ы на нодах с GPU.
Когда вы устанавливаете NVIDIA GPU Operator или соответствующий device plugin, он регистрирует GPU-ресурсы в kubelet на каждой ноде.
Плагин объявляет доступные GPU как расширенные ресурсы (например, nvidia.com/gpu: 1).
После регистрации kubelet репортит эти ресурсы в API server, и они становятся доступными для планировщика (schedulable).
После этого ваши поды могут запрашивать GPU через resource limits в своих спецификациях.
Без device plugin’а Kubernetes вообще не знает, что на нодах есть GPU, даже если железо физически присутствует.
Читайте здесь: https://newsletter.devopscube.com/p/gpu-scheduling-kubernetes
Примечание: в Kubernetes 1.32 появился Dynamic Resource Allocation (DRA) — следующий этап эволюции управления аппаратными ресурсами.
Он предоставляет более гибкое и детализированное распределение ресурсов, которое невозможно реализовать с помощью device plugin’ов.
Тем не менее, device plugin’ы по-прежнему широко используются в продакшене, и на данный момент оба подхода сосуществуют.
👉 DevOps Portal
