Need help with machine-controller-manager?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

188 Stars 77 Forks Apache License 2.0 688 Commits 65 Opened issues


Declarative way of managing machines for Kubernetes cluster

Services available


Need anything else?

Contributors list


CI Build status Go Report Card

:warning: We are in the progress of migrating and deprecating all the in-tree providers to OOT. Please avoid making any new feature enhancements to the intree providers. Kindly make it on the OOT providers available here. More details on adding new OOT providers can be found here.

Machine Controller Manager (MCM) manages VMs as another kubernetes custom resource. It provides a declarative way to manage VMs.

MCM supports following providers. These provider code is maintained externally (out-of-tree), and the links for the same are linked below: * Alicloud * AWS * Azure * Equinix Metal * GCP * KubeVirt * Metal Stack * Openstack * V Sphere * Yandex

It can easily be extended to support other cloud providers as well.

Example of managing machine:

kubectl create/get/delete machine vm1

Key terminologies

Nodes/Machines/VMs are different terminologies used to represent similar things. We use these terms in the following way

  1. VM: A virtual machine running on any cloud provider. It could also refer to a physical machine (PM) in case of a bare metal setup.
  2. Node: Native kubernetes node objects. The objects you get to see when you do a "kubectl get nodes". Although nodes can be either physical/virtual machines, for the purposes of our discussions it refers to a VM.
  3. Machine: A VM that is provisioned/managed by the Machine Controller Manager.

Design of Machine Controller Manager

See the design documentation in the

repository, please find the design doc here.

To start using or developing the Machine Controller Manager

See the documentation in the

repository, please find the index here.


An FAQ is available here

Cluster-api Implementation

  • cluster-api
    branch of machine-controller-manager implements the machine-api aspect of the cluster-api project.
  • Link:
  • Once cluster-api project gets stable, we may make
    branch of MCM as well cluster-api compliant, with well-defined migration notes.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.