Lab 1.1 — Deploy a GPU Machine Pool

In this lab, you will add a GPU-backed machine pool to your ROSA cluster. This pool will host the NVIDIA GPU that powers the Qwen3.6 inference service.

Estimated time: 15 minutes (5 min active + ~10 min wait)
Persona: Platform Engineer
Fire and forget: Trigger this lab first, then move on. The GPU node will be ready by the time you need it.

GPU nodes are expensive. The g6e.xlarge instance (NVIDIA L40S, 48 GB VRAM) costs approximately $1.65/hr on AWS. The pool is fixed at one node for this workshop to keep costs predictable.

Understanding ROSA Machine Pools

A machine pool is a group of worker nodes with a shared configuration (instance type, labels, taints). ROSA manages the lifecycle of these nodes — provisioning, replacing failed nodes — so you don’t have to interact with AWS EC2 directly.

Key parameters for the GPU pool:

Parameter Value & Rationale

--instance-type g6e.xlarge

1× NVIDIA GPU (24+ GB VRAM), suitable for serving Qwen3.6-35B MoE quantized (AWQ 4-bit)

--replicas 1

Fixed single GPU node — sufficient for this workshop and keeps costs predictable

--taints nvidia.com/gpu=present:NoSchedule

Prevents non-GPU workloads (dev pods, build pods) from landing on expensive GPU nodes

Create the GPU Machine Pool

  1. Set the cluster name variable (should already be in your shell from Module 100):

    echo "Cluster: $CLUSTER_NAME  AZ: $AWS_AZ"
    Expected Output
    Cluster: rosa-abc12  AZ: eu-west-1a

    If either variable is empty, run: source $HOME/.bashrc

  2. Create the GPU machine pool:

    rosa create machine-pool \
      --cluster $CLUSTER_NAME \
      --name gpu \
      --replicas 1 \
      --instance-type g6e.xlarge \
      --availability-zone $AWS_AZ \
      --taints 'nvidia.com/gpu=present:NoSchedule'
    Sample Output
    I: Machine pool 'gpu' created successfully on cluster 'rosa-abc12'
    I: To view all machine pools, run 'rosa list machinepools -c rosa-abc12'
  3. Start a background wait for the GPU node to become Ready. This runs in the background — you will continue working on other labs while it completes:

    oc wait node -l node.kubernetes.io/instance-type=g6e.xlarge \
      --for=condition=Ready --timeout=600s &
    echo "GPU node wait started in background (PID $!)"

✅ Checkpoint

rosa list machinepools --cluster $CLUSTER_NAME
Sample Output
ID   AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS  TAINTS                              AVAILABILITY ZONES  SUBNETS  SPOT  DISK SIZE  SG IDs
gpu  No           1         g6e.xlarge             nvidia.com/gpu=present:NoSchedule   eu-west-1a

The gpu machine pool is created. ✓

➡️ Move immediately to the next lab. Do not wait for the node — it will be ready by the time you need it.