Arm was made available in Preview on Google Cloud, and GKE Autopilot today! As this is an early stage Preview, there’s a few details to pay attention to if you want to try it out, like the version, regions and quota. I put together this quickstart for trying out Arm in Autopilot today.
Arm nodes are available in 3 regions, so be sure to use one from this list:
You’ll also need to create a cluster with a version greater than
1.24.1-gke.1400. This version isn’t the default today, even in the Rapid channel, so you’ll need to create a cluster at a specific version. The following command works at the time of writing, but in the future (once the patch version has been retired), you’ll need to specify a currently valid version newer than that one.
CLUSTER_NAME=autopilot-arm REGION=us-central1 VERSION=1.24 gcloud container clusters create-auto $CLUSTER_NAME \ --release-channel "rapid" --region $REGION \ --cluster-version $VERSION
During the preview, the price is discounted by 100% (meaning it’s currently free), so it’s a great time to try it out and explore. Just don’t go mining crypto.
With your Arm-capable cluster created, deploy an Arm workload like this example from the Autopilot docs. You need to specify 2 node selectors, the compute class (an Autopilot-specific label), and the architecture (a well-known label).
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-arm spec: replicas: 3 selector: matchLabels: app: nginx-arm template: metadata: labels: app: nginx-arm spec: nodeSelector: cloud.google.com/compute-class: Scale-Out kubernetes.io/arch: arm64 containers: - name: nginx-arm image: nginx resources: requests: cpu: 2000m memory: 2Gi
Be aware that Arm nodes today have fairly limited quota compared to other machine families (I was able to provision 18 node cores in us-central1 on the default quota), but it should be enough to give it a try and to start developing some Arm workloads. For now, the best advice on GCP would be to build multi-arch images so you can fall back to x86 when needed.
If you run into problems, like Pending Arm Pods that never schedule, review the troubleshooting guide. In brief, check your event log for clues (
kubectl get events -w), and verify that you have the right a) region (from the list of 3), b) GKE version (it must be equal to or higher than
1.24.1-gke.1400 precisely!), and c) enough quota (look for any that are close to 100% used).