---
# System prepended metadata

title: ARM Support
tags: ['#arm', '#gardener']

---

ARM Support
===
**Gardener now supports ARM CPU architecture-based virtual machines**

Gardener can now run production workloads on virtual machines using instances that are based on the ARM CPU architecture. You can run these workloads by adding a worker pool to a shoot cluster with the ARM CPU architecture.

ARM-based virtual machines represent a cost-effective and power-efficient option that doesn’t compromise on the level of performance that many users need. The ARM architecture provides excellent price performance for web and application servers, open-source databases, media servers, and more.

For more information, see:
1.  https://www.arm.com/architecture/cpu
1. https://github.com/gardener/gardener/blob/master/docs/usage/shoot_supported_architectures.md

Right now, Gardener only supports ARM for AWS. In later stages, other cloud providers will be enabled to use the ARM architecture, depending on whether the cloud provider supports ARM-based instances or not.

**How does it work in detail**

![](https://i.imgur.com/oa1IACr.png)

When creating a new shoot cluster, you can select the CPU architecture in the dropdown menu for the worker architecture. Choose between amd64 and arm64.
Nodes in a Shoot cluster are labelled with the label `kubernetes.io/arch: <architecture>` which can be used to identify the architecture as well as for other use cases such as scheduling workloads.

While creating a Shoot cluster, you’re either assigning all workers in a pool the same CPU architecture or each worker pool can have different architecture from a list for supported architecture. Depending on your scenario, you must pay attention to different details.
When a Shoot cluster contains only worker pools with the same architecture, you only must take care of compiling for this architecture.
If you’re assigning different CPU architectures, you must take care to carefully schedule your individual binaries in a way that they are compiled for the correct target architecture.
However, you can use multi-arch binaries for your workload to be free from this hassle.