Arm on Autopilot

2 min read

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:

  • us-central
  • europe-west4
  • asia-southeast1

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

arm.yaml

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).

Next up: building your own Arm images using Cloud Build.

1 comment

Comments are closed.