This section describes the Machine resource used in Mirantis Container Cloud API. The Machine resource describes the machine-level parameters.

For demonstration purposes, the Container Cloud the Machine custom resource (CR) can be split into the following major sections:


The Container Cloud Machine custom resource (CR) contains the following fields:

  • apiVersion

  • kind

    Object type that is Machine

The metadata object field of the Machine resource contains the following fields:

  • name

    Name of the Machine object

  • namespace

    Namespace where the machine has been created

  • labels


      Provider type that is aws for AWS machines and matches the provider type in the Cluster object


      Region name that matches the region name in the Cluster object


      Cluster name that a machine is linked to


      • For the control plane role of a machine, this label contains any value, for example, "true"

      • For the worker role, this label is absent

    • (optional) Available since 2.17.0

      Name of the MachinePool object to which this machine is assigned to. If the machine is not assigned to any machine pool, this label is absent.


    Labels and annotations that are not documented in this API Reference are generated automatically by Container Cloud. Do not modify them using the Container Cloud API.

Configuration example:

kind: Machine
  name: example-control-plane
  namespace: example-ns
  labels: aws region-one example-cluster "true" # remove for worker

spec:providerSpec for instance configuration


If a machine is assigned to a machine pool, the providerSpec section of the specific Machine object automatically updates during pool configuration. The only providerSpec field that is not overwritten automatically is maintenance. Do not edit other fields of this section manually.

The spec object field of the Machine object represents the AWSMachineProviderSpec subresource with all required details to create an AWS instance. It contains the following fields:

  • apiVersion

  • kind


  • ami

    Reference to the Amazon Machine Image (AMI):

    • id - AMI ID to create a machine instance from.

  • instanceType

    Type of instance to create.

  • rootDeviceSize

    Size of the root volume.

  • nodeLabels

    List of node labels to be attached to a node for the user to run certain components on separate cluster nodes. The list of allowed node labels is located in the Cluster object status providerStatus.releaseRef.current.allowedNodeLabels field.

    Starting from Container Cloud 2.17.0, if the value field is not defined in allowedNodeLabels, a label can have any value.

    Before or after a machine deployment, add the required label from the allowed node labels list with the corresponding value to spec.providerSpec.value.nodeLabels in machine.yaml. For example:

    - key: stacklight
      value: enabled

    The addition of a node label that is not available in the list of allowed node labels is restricted.

  • maintenance

    Maintenance mode of a machine. If enabled, the node of the selected machine is drained, cordoned, and prepared for maintenance operations.

Configuration example:

      id: ami-033a0960d9d83ead0
    instanceType: c5d.4xlarge
    kind: AWSMachineProviderSpec
    rootDeviceSize: 120
    - key: openstack-control-plane
      value: enable


The status object field of the Machine object represents the AWSMachineProviderStatus subresource that describes the current state of an AWS instance and contains the following fields:

  • apiVersion

  • kind


  • conditions

    List of a machine status conditions:

    • type

      Object type

    • ready

      Readiness flag

    • message

      Status details

  • providerInstanceState

    Current state of an AWS instance:

    • id

      ID of an AWS instance

    • ready

      Readiness flag

    • state

      State of an AWS instance

  • instanceID

    Instance ID of a machine created in AWS

  • instanceState

    State of an AWS instance linked to a machine

  • privateIp

    Private IPv4 address assigned to an instance

  • maintenance

    Maintenance mode of a machine. If enabled, the node of the selected machine is drained, cordoned, and prepared for maintenance operations.

  • status

    Current status of a machine:

    • Provision

      A machine is yet to obtain a status

    • Uninitialized

      A machine is yet to obtain the node IP address and host name

    • Pending

      A machine is yet to receive the deployment instructions and it is either not booted yet or waits for the LCM controller to be deployed

    • Prepare

      A machine is running the Prepare phase during which Docker images and packages are being predownloaded

    • Deploy

      A machine is processing the LCM controller instructions

    • Reconfigure

      A machine is being updated with a configuration without affecting workloads running on the machine

    • Ready

      A machine is deployed and the supported Mirantis Kubernetes Engine (MKE) version is set

    • Maintenance

      A machine host is cordoned, drained, and prepared for maintenance operations

Configuration example:

    kind: AWSMachineProviderStatus
     - message: Kubelet's NodeReady condition is True
       ready: true
       type: Kubelet
     - message: Swarm state of the machine is ready
       ready: true
       type: Swarm
     - message: LCM Status of the machine is Ready
       ready: true
       type: LCM
       id: i-0f75ac03025191073
       ready: true
       state: running
    hardware: {}
    instanceID: i-01125dc27ec5e5c1a
    instanceState: running
    kind: AWSMachineProviderStatus
    status: Ready