Skip to content

Module 2 · Lab 1: a GPU-ready EKS cluster

Format: hands-on lab Time: 50 min (incl. 5 min buffer) Cost: one GPU node, ≈ $0.35–1.00/hour depending on Spot

Goal: a GPU node running, the NVIDIA GPU Operator installed correctly for EKS, and your first CUDA container printing nvidia-smi output.

You start with a cluster that has never seen a GPU. You'll add each layer of the stack yourself, in the order the request flows through them:

flowchart LR
    A["Pod gpu-smoke<br/>nvidia.com/gpu: 1<br/><i>Pending</i>"] --> B[Karpenter]
    B -->|"matches"| C["NodePool gpu<br/>+ EC2NodeClass gpu"]
    C -->|"launches"| D["EC2 g5 / g6<br/>AL2023 NVIDIA AMI"]
    D -->|"node joins"| E["GPU Operator DaemonSets<br/>device plugin · GFD · DCGM"]
    E -->|"registers"| F["allocatable<br/>nvidia.com/gpu: 1"]
    F -->|"scheduler binds"| G["gpu-smoke <i>Running</i><br/>→ nvidia-smi"]

Steps

Step What you do Layer
2.1 Verify the base stack Confirm Karpenter, Prometheus and KEDA are up and there are no GPU nodes
2.2 Create GPU capacity Pin an AMI, write an EC2NodeClass and a NodePool for g5/g6 Spot with On-Demand fallback, taint the nodes hardware, driver, toolkit
2.3 Install the GPU Operator Helm install with driver.enabled=false — and understand why device plugin, GFD, DCGM
2.4 Your first GPU pod Deploy a CUDA pod, watch Karpenter launch the node, read nvidia-smi scheduler, pod
2.5 Checkpoint Validate, screenshot, take a break

Hard gate

Nobody goes to break without nvidia-smi output from their own cluster on screen. If you're stuck, raise your hand (or drop a message in the chat) early — the helpers are here for exactly this.

Everything you apply in this lab lives under modules/01-gpu-nodes/ and modules/02-gpu-operator/ in the repo.

Start with 2.1 →