sigs.k8s.io/cluster-api@v1.7.1/docs/book/src/tasks/experimental-features/machine-pools.md (about) 1 # Experimental Feature: MachinePool (beta) 2 3 The `MachinePool` feature provides a way to manage a set of machines by defining a common configuration, number of desired machine replicas etc. similar to `MachineDeployment`, 4 except `MachineSet` controllers are responsible for the lifecycle management of the machines for `MachineDeployment`, whereas in `MachinePools`, 5 each infrastructure provider has a specific solution for orchestrating these `Machines`. 6 7 **Feature gate name**: `MachinePool` 8 9 **Variable name to enable/disable the feature gate**: `EXP_MACHINE_POOL` 10 11 Infrastructure providers can support this feature by implementing their specific `MachinePool` such as `AzureMachinePool`. 12 13 More details on `MachinePool` can be found at: 14 [MachinePool CAEP](https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20190919-machinepool-api.md) 15 16 For developer docs on the MachinePool controller, see [here](./../../developer/architecture/controllers/machine-pool.md). 17 18 ## MachinePools vs MachineDeployments 19 20 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. 21 22 | MachinePools | MachineDeployments | 23 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | 24 | 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. | 25 | Set of instances is orchestrated by the infrastructure provider. | Set of instances is orchestrated by Cluster API using a MachineSet. | 26 | Each MachinePool corresponds 1:1 with an associated InfraMachinePool. | Each MachineDeployment includes a MachineSet, and for each replica, it creates a Machine and InfraMachine. | 27 | Each MachinePool requires only a single BootstrapConfig. | Each MachineDeployment uses an InfraMachineTemplate and a BootstrapConfigTemplate, and each Machine requires a unique BootstrapConfig. | 28 | 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. |