Arm and Graviton

What's the process for enabling Graviton for an organization and what are the usage limitations (around nodeSelector)?

Graviton is enabled if you use the node selector. You can modify deployment/Statefulset as below:

You can use the nodeSelector:

nodeSelector: arm64

For GKE, you will also need the toleration:

  - key: "" 
  	value: "arm64"
  	operator: "Equal"
  	effect: "NoSchedule"

Does CAST AI support ARM with the castai-evictor Helm chart image?

Yes, Evictor can run on ARM nodes.

Can CAST AI provision different resources per namespace? For example, only ARM Graviton-based nodes for the app namespace.

To achieve this, use nodeTemplates and implement nodeSelector or toleration for workloads within the "app" namespace. This approach would enable the assignment of pods to designated nodes, specifically ARM Graviton nodes.

As of now, this process entails applying these changes to all workloads within the "app" namespace to ensure distinct resources are generated for each namespace.

To learn more about nodeTemplates, please refer to this page.

Here's an example configuration:

Can I run workloads on multi-architecture nodes, both arm64 and amd64 nodes?

Yes, you can do this by enabling both architectures in a CAST AI node template. You can then use the nodeAffinity that we provide in the node template UI on your multi-architecture workloads.

When using multi-arch, is CAST AI defaulting to ARM or AMD?

If there are no nodeSelectors or affinities on the workloads, and both architectures are selected the following is default:

  • Custom node template picks the cheapest
  • Default node template defaults to AMD