Lab 1.1 — Deploy a GPU Node Pool
Act 1 starts here. Add a GPU node pool to the ARO HCP cluster. This is the NVIDIA A100 80 GB that will run Qwen3.8 — the in-cluster model OpenCode will call this afternoon.
|
Estimated time: 15 minutes (5 min active + ~10 min wait) |
|
GPU nodes are expensive. One |
Understanding ARO HCP node pools
A node pool is a group of worker nodes with a shared VM size. ARO HCP manages the VMs in your subscription — provisioning and replacing them — so the platform engineer does not build virtual machines by hand.
The CPU pool workers (two Standard_D4s_v3) already exists from Act 0. This lab adds a second pool.
| Parameter | Value & Rationale |
|---|---|
|
1× NVIDIA A100 80 GB. Qwen3.8-27B INT4 is ~19.5 GB and this workshop serves it at a 256K context, which does not fit a 16 GB T4. |
|
One GPU node. Enough for the workshop, and the hourly price stays predictable. |
|
Dev Spaces and build pods stay on the CPU workers. |
make gpu reads state/cluster.env and runs az aro hcp cluster nodepool create with those values. Run it again and it leaves an existing gpu pool in place.
Create the GPU node pool
Quota for Standard NCADS_A100_v4 Family vCPUs in East US must be at least 24. If it is still 0, this command fails until the request is approved.
make gpu
Creating node pool gpu (1 x Standard_NC24ads_A100_v4)
{
"name": "gpu",
"replicas": 1,
"state": "Succeeded",
"vmSize": "Standard_NC24ads_A100_v4"
}
|
If Azure returns a capacity error, delete the pool and try again later, or pick another region and recreate the cluster. GPU sizes are not available in every region at all times.
|
Start a background wait for the GPU node to become Ready. oc wait only works after the node exists — poll until the label appears, then wait for Ready. Continue to the next lab while it completes:
(
until oc get node -l node.kubernetes.io/instance-type=Standard_NC24ads_A100_v4 \
--no-headers 2>/dev/null | grep -q .; do
sleep 10
done
oc wait node -l node.kubernetes.io/instance-type=Standard_NC24ads_A100_v4 \
--for=condition=Ready --timeout=900s
) &
echo "GPU node wait started in background (PID $!)"