Upstream Kubernetes (kubeadm)
CNCF / DIY
Vanilla Kubernetes bootstrapped with kubeadm. Maximum control and portability; you own drivers, runtime, CNI, and the GPU Operator lifecycle.
Bootstrap with Upstream Kubernetes (kubeadm)NVIDIA GPU Operator / AMD GPU Operator + device plugin
GPU Operator (recommended) or manual host driver + NVIDIA container toolkit.
containerd or CRI-O; configure the NVIDIA runtime as default.
Default scheduler; add Kueue/Volcano/YuniKorn for gang/batch scheduling.
MIG, time-slicing, MPS — all via the operator or manual device-plugin config.
Your choice of CNI (Cilium/Calico); Multus + SR-IOV/RDMA for training.
You own kubeadm upgrades and operator re-validation.
- 1
Ensure the NVIDIA container toolkit path
Either the operator installs it, or install on hosts and set containerd's default runtime.
- 2
Install the GPU Operator
Handles drivers, toolkit, device plugin, and DCGM.
bashhelm repo add nvidia https://helm.ngc.nvidia.com/nvidia helm repo update helm install --wait gpu-operator nvidia/gpu-operator \ -n gpu-operator --create-namespace - 3
Add a batch scheduler (optional)
Install Kueue or Volcano for queued, gang-scheduled training jobs.
kubectl get nodes -o custom-columns=NAME:.metadata.name,GPU:.status.allocatable.'nvidia\.com/gpu'
kubectl -n gpu-operator get pods
kubectl run cuda-check --rm -it --restart=Never \
--image=nvidia/cuda:12.4.1-base-ubuntu22.04 \
--limits=nvidia.com/gpu=1 -- nvidia-smi- ·You own the full lifecycle — no managed backstop.
- ·Kernel/driver mismatches are the most common failure; keep them pinned.
Teams needing full control, custom hardware, or a portable reference build.