Using ARM servers

Introduction

Servers with ARM processors offers cost optimization while retaining competitive performance when compared to x86 architecture servers, with greater efficiency for parallel workloads.

If your workload supports the ARM architecture, it can be a great alternative to further improve thescalability and costs of your infrastructure.

note

Currently, only hcloud nodes are supported. If you wish to use ARM in bare-metal servers, please contact our support.

Step 1: Adding node images

ARM servers requires node images specifically built and optimized for their architecture. You need to add them to your HetznerClusterStackReleaseTemplate before using them in your clusters:

yaml
apiVersion: infrastructure.clusterstack.x-k8s.io/v1alpha1 kind: HetznerClusterStackReleaseTemplate metadata: name: {% $clusterstackrelease.name %} spec: template: spec: nodeImages: - controlplaneamd64hcloud - workeramd64hcloud // [!code tooltip:controlplanearm64hcloud:Add this if you want to use ARM Control Planes] - controlplanearm64hcloud // [!code tooltip:workerarm64hcloud:Add this if you want to use ARM workers] - workerarm64hcloud
tip

If you want to run a full ARM cluster, you can remove the amd64 node images.

Step 2: Using ARM nodes

Now you can add a new machine deployment with the workerarm64hcloud class and an ARM machine type, and set the appropriate variables if you wish to have ARM control planes:

yaml
apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: mycluster spec: clusterNetwork: services: cidrBlocks: ['10.128.0.0/12'] pods: cidrBlocks: ['192.168.0.0/16'] serviceDomain: 'cluster.local' topology: class: {% $clusterstackrelease.name %} version: {% $kubernetes.version %} controlPlane: replicas: 3 workers: machineDeployments: - class: workeramd64hcloud name: md-0 replicas: 3 failureDomain: nbg1 variables: overrides: - name: workerMachineTypeHcloud value: cx31 - class: workerarm64hcloud // [!code ++] name: md-0 // [!code ++] replicas: 3 // [!code ++] failureDomain: nbg1 // [!code ++] variables: // [!code ++] overrides: // [!code ++] - name: workerMachineTypeHcloud // [!code ++] value: cax31 // [!code ++] variables: - name: region value: nbg1 // [!code tooltip:arm64:2:You need to set this for ARM control planes] - name: controlPlaneMachineArchHcloud value: arm64 - name: controlPlaneMachineTypeHcloud // [!code tooltip:cax31:Remember to change the machine type to one of ARM architecture] value: cax31

Available ARM machine types are:

Type
CAX11
CAX21
CAX31
CAX41

For more information on Hetzner machine types, please visit the Hetzner documentation .