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.                                                   |