Overview and What You Will Learn
In this lab, you will create both an Autopilot and a Standard mode GKE cluster, deploy the same simple application to each, and directly compare what each mode requires you to manage versus what Google handles automatically.
Why This Matters in Production
A small platform team adopts GKE Standard mode and spends significant ongoing effort sizing node pools, patching node OS versions, and tuning cluster autoscaling parameters - work that Autopilot would have handled entirely on their behalf, for a workload that never actually needed the specific node-level control Standard mode provides.
Core Principles
Both modes run the same Kubernetes API and accept the same workload definitions, but they differ fundamentally in who manages the underlying compute nodes.
+------------------------------------------+| GKE Autopilot || Google manages node provisioning, sizing, || and patching entirely || You define workloads; nodes appear || automatically to run them || Billed per pod resource request, not per node |+------------------------------------------+| GKE Standard || You choose node pools, machine types, and || manage scaling and patching yourself || Full control over node-level configuration || Billed per node, regardless of pod density |+------------------------------------------+Detailed Step-by-Step Practical Lab
- Create a project and enable GKE:
gcloud projects create gcp-gke-lab-2026 --name="GKE Modes Lab"gcloud config set project gcp-gke-lab-2026gcloud services enable container.googleapis.com- Create an Autopilot cluster - notice no node pool configuration is specified at all:
gcloud container clusters create-auto gke-autopilot-lab \ --region=asia-south1- Create a Standard mode cluster, explicitly specifying node pool configuration:
gcloud container clusters create gke-standard-lab \ --zone=asia-south1-a \ --num-nodes=2 \ --machine-type=e2-medium- Deploy the same simple application to both clusters:
gcloud container clusters get-credentials gke-autopilot-lab --region=asia-south1kubectl create deployment hello-app --image=gcr.io/google-samples/hello-app:1.0 gcloud container clusters get-credentials gke-standard-lab --zone=asia-south1-akubectl create deployment hello-app --image=gcr.io/google-samples/hello-app:1.0- Compare node visibility between the two clusters:
gcloud container clusters get-credentials gke-autopilot-lab --region=asia-south1kubectl get nodes## Autopilot manages nodes automatically - you'll see nodes exist,## but their sizing was chosen by Google based on actual pod requirements gcloud container clusters get-credentials gke-standard-lab --zone=asia-south1-akubectl get nodes## Standard shows exactly the 2 nodes you explicitly created, with the## machine type you specifically choseNoteIn Autopilot, you cannot directly SSH into or manage individual nodes the way you can in Standard mode - Google manages the node layer entirely, which is precisely the trade-off Autopilot makes for reduced operational overhead.
- Check how each cluster is billed differently by reviewing the cluster's node pool configuration:
gcloud container node-pools list --cluster=gke-standard-lab --zone=asia-south1-a## Standard mode explicitly shows node pool details you configured and are billed for- Clean up:
gcloud container clusters delete gke-autopilot-lab --region=asia-south1 --quietgcloud container clusters delete gke-standard-lab --zone=asia-south1-a --quietgcloud projects delete gcp-gke-lab-2026 --quietProduction Best Practices & Common Pitfalls
Common MistakeChoosing Standard mode by default out of familiarity with managing Kubernetes nodes directly, without checking whether the workload actually needs node-level control - like specific node taints, custom kernel parameters, or GPU node pools with fine-grained configuration - that Autopilot doesn't expose.
TipStart new GKE workloads on Autopilot unless a specific, concrete reason requires Standard mode's node-level control. Autopilot's per-pod billing model and zero node management overhead make it the lower-effort default for most containerized workloads.
- Autopilot enforces certain security and configuration best practices by default that Standard mode leaves as configuration choices - like disabling legacy metadata endpoints and requiring Workload Identity for pod-to-GCP-API authentication, rather than allowing a less secure default.
- Standard mode remains the right choice for workloads needing very specific node configurations - GPU workloads with precise driver requirements, DaemonSets needing privileged node access, or cost optimization strategies requiring exact control over node bin-packing density.
Quick Reference & Troubleshooting Commands
| Command | Description |
|---|---|
gcloud container clusters create-auto |
Create a GKE Autopilot cluster |
gcloud container clusters create |
Create a GKE Standard mode cluster |
gcloud container clusters get-credentials |
Configure kubectl for a specific cluster |
gcloud container node-pools list |
List node pools (Standard mode only) |