Title: Lab 10 — Deploying the NVIDIA GPU Operator on Minikube
Course: AIINFRA 200: Production Inference Serving & GPU Orchestration > Section: Week 10 — GPU Orchestration on Kubernetes with the NVIDIA GPU Operator

🛠️ Lab 10 — Deploying the NVIDIA GPU Operator on Minikube (50 pts)

Goal: Enable GPU passthrough to a local minikube cluster, install the NVIDIA GPU Operator via Helm, and use kubectl to identify every component the Operator deployed for you automatically — reinforcing the operator pattern before you touch manual MIG/DRA configuration in a later week. Steps:

1. Confirm prerequisites: a machine (or cloud VM) with an NVIDIA GPU, the NVIDIA driver already installed on the host, minikube, kubectl, and Helm installed locally. All tools used in this lab are free.
2. Follow minikube's official NVIDIA GPU tutorial to start a minikube cluster with GPU passthrough enabled (using the containerd/docker driver configuration minikube documents for GPU support). Confirm the node sees the GPU with minikube kubectl -- describe node before moving on.
3. Add the NVIDIA Helm repo:

helm repo add nvidia https://nvidia.github.io/gpu-operator
helm repo update

1. Install the GPU Operator into its own namespace:

helm install --wait --generate-name \
  -n gpu-operator --create-namespace \
  nvidia/gpu-operator --version=v26.3.3

1. Watch the rollout: kubectl get pods -n gpu-operator -w. Wait until every pod reaches Running/Completed.
2. Run kubectl get pods -n gpu-operator and, in your own words, identify each pod's role: driver DaemonSet, Container Toolkit, device plugin, GPU Feature Discovery, DCGM Exporter, and node feature discovery components.
3. Run kubectl describe node <your-node> and record: (a) the automatic GPU-related node labels applied by GPU Feature Discovery/NFD, (b) the nvidia.com/gpu allocatable resource count, and (c) any taints applied to the node.
4. Verify the driver is actually working by exec-ing into the driver pod and running nvidia-smi there directly — do not expect it to run on the host shell:

kubectl exec -n gpu-operator -it <nvidia-driver-daemonset-pod> -- nvidia-smi

1. Deploy a simple test pod that requests nvidia.com/gpu: 1 in its resource limits and runs nvidia-smi as its command. Confirm it schedules successfully and prints valid GPU output in its logs (kubectl logs).
2. Write up your findings (see Deliverables) and submit.

Deliverables: A short lab report (online text entry or uploaded doc) containing: your kubectl get pods -n gpu-operator output with each pod's role labeled, the relevant kubectl describe node excerpt showing GPU labels/allocatable/taints, the nvidia-smi output from both the driver pod exec and the test pod's logs, and 3–5 sentences reflecting on where nvidia-smi actually lives and why that surprised you (or didn't).