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