Red Hat OpenShift Service on AWS uses machine pools as an elastic, dynamic provisioning method on top of your cloud infrastructure.

The primary resources are machines, machine sets, and machine pools.


A machine is a fundamental unit that describes the host for a worker node.

Machine sets

MachineSet resources are groups of machines. If you need more machines or must scale them down, this is done by configuring the number of replicas in the machine pool to which the machine sets belong.

Machine sets are not directly modifiable in ROSA.

Machine pools

Machine pools are a higher level construct to machine sets.

A machine pool creates machine sets that are all clones of the same configuration across availability zones. Machine pools perform all of the host node provisioning management actions on a worker node. If you need more machines or must scale them down, change the number of replicas in the machine pool to meet your compute needs. Scaling can be configured manually or you can set autoscaling.

By default, a cluster is created with one machine pool. Additional machine pools can be added later to an existing cluster and you can modify the default machine pool. Machine pools can also be deleted.

Multiple machine pools can exist on a single cluster, and they can each have different types or different size nodes.

Machine pools in multiple zone clusters

When you create a machine pool in a multiple availability zone (Multi-AZ) cluster, that one machine pool has 3 zones. The machine pool, in turn, creates a total of 3 machine sets - one machine set for each zone in the cluster. Each of those machine sets manages one or more machines in its respective availability zone.

If you create a new Multi-AZ cluster, the machine pools are replicated to those zones automatically. If you add a machine pool to an existing Multi-AZ, the new pool is automatically created in those zones. Similarly, deleting a machine pool will delete it from all zones. Due to this multiplicative effect, using machine pools in Multi-AZ cluster can consume more of your project’s quota for a specific region when creating machine pools.