Adding infrastructure nodes to an ARO cluster
This content is authored by Red Hat experts, but has not yet been tested on every supported configuration. This guide has been validated on OpenShift 4.20. Operator CRD names, API versions, and console paths may differ on other versions.
This document shows how to set up infrastructure nodes in an ARO cluster and move infrastructure related workloads to them. This can help with larger clusters that have resource contention between user workloads and infrastructure workloads such as Prometheus.
Important note: For nodes to be recognized as infrastructure nodes in ARO, follow the current Microsoft requirements for VM size, node count, and Azure VM tags. If these criteria are not met, nodes are treated as regular workers for billing.
Microsoft reference: https://learn.microsoft.com/en-us/azure/openshift/howto-infrastructure-nodes
You can find the original (and more detailed) document describing the process for a self-managed OpenShift Container Platform cluster here
Prerequisites
Create Infra Nodes
We’ll use the MOBB Helm chart to add ARO machinesets for infra nodes. It looks up an existing machineset to collect cluster-specific settings, then creates a new machineset for infra nodes with matching provider settings.
-
Add the MOBB chart repository to your Helm
-
Update your repositories
-
Install the
mobb/aro-machinesetsChart with parameters to createinfranodesCreate a
values.yamlfile like this: -
Wait for the new nodes to be available
Moving Infra workloads
Ingress
You may choose this for any additional Ingress controllers you may have in the cluster, however if you application has very high Ingress resource requirements it may make sense to allow them to spread across the worker nodes, or even a dedicated MachineSet.
-
Set the
nodePlacementon theingresscontrollertonode-role.kubernetes.io/infraand increase thereplicasto match the number of infra nodes -
Check the Ingress Controller Operator is starting
podson the newinfranodes
Registry
-
Set the
nodePlacementon theregistrytonode-role.kubernetes.io/infra -
Check the Registry Operator is starting
podson the newinfranodes
Cluster Monitoring
-
Configure the cluster monitoring stack to use the
infranodesNote: This will override any other customizations to the cluster monitoring stack, so you may want to merge your existing customizations into this before running the command.
-
Check the OpenShift Monitoring Operator is starting
podson the newinfranodessome Pods like
prometheus-operatorwill remain onmasternodes.sample output