MachinePool feature provides a way to manage a set of machines by defining a common configuration, number of desired machine replicas etc. similar to
MachineSet controllers are responsible for the lifecycle management of the machines for
MachineDeployment, whereas in
each infrastructure provider has a specific solution for orchestrating these
Feature gate name:
Variable name to enable/disable the feature gate:
Infrastructure providers can support this feature by implementing their specific
MachinePool such as
More details on
MachinePool can be found at:
For developer docs on the MachinePool controller, see here.
Although MachinePools provide a similar feature to MachineDeployments, MachinePools do so by leveraging an InfraMachinePool which corresponds 1:1 with a resource like VMSS on Azure or Autoscaling Groups on AWS which we treat as a black box. When a MachinePool is scaled up, the InfraMachinePool scales itself up and populates its provider ID list based on the response from the infrastructure provider. On the other hand, when a MachineDeployment is scaled up, new Machines are created which then create an individual InfraMachine, which corresponds to a VM in any infrastructure provider.
|Creates new instances through a single infrastructure resource like VMSS in Azure or Autoscaling Groups in AWS.
|Creates new instances by creating new Machines, which create individual VM instances on the infra provider.
|Set of instances is orchestrated by the infrastructure provider.
|Set of instances is orchestrated by Cluster API using a MachineSet.
|Each MachinePool corresponds 1:1 with an associated InfraMachinePool.
|Each MachineDeployment includes a MachineSet, and for each replica, it creates a Machine and InfraMachine.
|Each MachinePool requires only a single BootstrapConfig.
|Each MachineDeployment uses an InfraMachineTemplate and a BootstrapConfigTemplate, and each Machine requires a unique BootstrapConfig.
|Maintains a list of instances in the
providerIDList field in the MachinePool spec. This list is populated based on the response from the infrastructure provider.
|Maintains a list of instances through the Machine resources owned by the MachineSet.