Updating Worker Node VM Sizes in Azure Red Hat OpenShift (ARO)
This guide explains how to change the VM sizes (SKUs) for worker and infrastructure nodes in an ARO cluster.
WARNING
Master nodes cannot be changed after cluster creation. Only worker nodes and infrastructure nodes can be modified.
Prerequisites
- Access to the ARO cluster with cluster-admin privileges
- The
oc
CLI tool installed and configured - Knowledge of the desired target VM SKU size
- Check the Azure VM SKU support matrix to ensure your target SKU is supported
Update Worker Node VM Size
1. Switch to the machine API namespace
oc project openshift-machine-api
2. List and identify the machineset to modify
View all available machinesets:
oc get machineset
Example output:
NAME DESIRED CURRENT READY AVAILABLE AGE
aro-cluster-worker-westeurope1 3 3 3 3 30d
aro-cluster-worker-westeurope2 3 3 3 3 30d
3. Edit the machineset configuration
Edit the specific machineset you want to modify:
oc edit machineset <machineset-name>
Locate the vmSize
field and change it to your desired SKU. For example:
Before:
spec:
template:
spec:
providerSpec:
value:
vmSize: Standard_D4s_v3
After:
spec:
template:
spec:
providerSpec:
value:
vmSize: Standard_D8s_v5
Save and exit the editor.
4. Update existing nodes (one at a time)
For each node in the machineset, perform the following steps:
4.1 Cordon the node
Prevent new pods from being scheduled on the node:
oc adm cordon <nodename>
4.2 Drain the node
Migrate workloads to other nodes:
oc adm drain <nodename> --delete-emptydir-data --ignore-daemonsets
Note: This command may take several minutes depending on the number of pods running on the node.
4.3 Delete the node
oc delete node <nodename>
4.4 Delete the machine (optional)
The machine will be automatically deleted, but you can manually trigger it:
oc delete machine <machine-name>
Tip: To find the machine name for a specific node:
oc get machines -o wide
5. Verify new node creation
After deleting the old machine, the cluster will automatically detect that the machineset replica count is not met and create a new machine with the updated VM size.
Monitor the machine creation:
oc get machines -w
Verify the new node joins the cluster:
oc get nodes
Check that the new node is ready:
oc get nodes -l node-role.kubernetes.io/worker
6. Repeat for remaining nodes
Repeat steps 4.1 through 5 for each remaining node in the machineset to complete the migration.
Troubleshooting
Check machineset status:
oc get machineset <machineset-name> -o yaml
View machine events:
oc describe machine <machine-name>
Check machine controller logs:
oc logs -n openshift-machine-api deployment/machine-api-controllers -c machine-controller
Documentation
For further details, refer to the official documentation: