Skip to main content

Install Conductor on ARM-based clusters (Enterprise)

Conductor is compatible with ARM-based Kubernetes clusters, and in most cases, the Conductor agent should work out of the box at installation time. However, some managed platform providers and ops teams make use of taints and have a mix of ARM and x86 nodes, which can potentially impact the successful deployment of the agent.

In these cases, tolerations and potentially node selectors will need to be configured on the Conductor agent and Dapr control plane to allow for successful cluster scheduling.

ARM Tolerations

In some cases, i.e. in the case of Google Kubernetes Engine (GKE), ARM nodes are tainted with kubernetes.io/arch=arm64:NoSchedule which prevents the Conductor and Dapr control plane resources from being successfully scheduled.

In order to compensate for this taint, the below tolerations should be added to the diagrid-agent Deployment, the diagrid-agent-logs-collector DaemonSet and the Dapr control plane resources.

  1. Add the following toleration to both the Agent Deployment and Logs Collector Daemonset in the agent advanced configuration section of the related cluster connection.
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"

arm toleration

For the Dapr control plane resources, add the tolerations to the Helm arguments in the global section as follows.

global:
tolerations:
- key: "kubernetes.io/arch"
operator: "Equal"
value: "arm64"
effect: "NoSchedule"

dapr toleration

Node selectors for ARM nodes

If your cluster has a mix of ARM and x86 nodes, and you want the Conductor and Dapr control plane resources to only be scheduled on nodes of a particular architecture, you need to add node selectors to them. This is common on Azure Kubernetes Service (AKS) among other cloud providers.

In most cases Kubernetes nodes are labeled with well known labels. For architecture type, use the kubernetes.io/arch label and set it amd64 for x86 64-bit nodes and arm64 for ARM 64-bit nodes. Use this label to add node selectors to the Conductor and Dapr control plane resources, to force them to run on a particular node type.

In the Conductor UI, use the Advanced Agent Configuration section to add the following node selector for both the Agent Deployment and Logs Collector Daemonset.

nodeSelector:
kubernetes.io/arch: arm64

For the Dapr control plane resources, add the node selector to the Helm arguments in the global section as follows.

global:
nodeSelector:
kubernetes.io/arch: arm64

Note: Be sure to check with your Platform/DevOps team and read the documentation from your cloud provider for any other steps needed to deploy workloads on ARM-based clusters.