Skip to main content

Modifying a compute machine set

To add labels, change the instance type, change block storage, or make other changes, you can modify a compute machine set.

note

If you need to scale a compute machine set without making other changes, see "Manually scaling a compute machine set".

Modify a compute machine set by using the CLI​

To enable features or change the properties of machines, you can modify the configuration of a compute machine set using the CLI. You can then propagate the changes to the machines in your cluster.

When you modify a compute machine set, your changes only apply to compute machines that are created after you save the updated MachineSet custom resource (CR). The changes do not affect existing machines.

note

Changes made in the underlying cloud provider are not reflected in the Machine or MachineSet CRs. To adjust instance configuration in cluster-managed infrastructure, use the cluster-side resources.

You can replace the existing machines with new ones that reflect the updated configuration by scaling the compute machine set to create twice the number of replicas and then scaling it down to the original number of replicas.

If you need to scale a compute machine set without making other changes, you do not need to delete the machines.

note

By default, the OpenShift Container Platform router pods are deployed on compute machines. Because the router is required to access some cluster resources, including the web console, do not scale the compute machine set to 0 unless you first relocate the router pods.

The output examples in this procedure use the values for an AWS cluster.

Prerequisites

tag:CAPI[]

  • Your OpenShift Container Platform cluster uses the Cluster API. end:CAPI[] tag:MAPI[]
  • Your OpenShift Container Platform cluster uses the Machine API. end:MAPI[]
  • You are logged in to the cluster as an administrator by using the OpenShift CLI (oc).

Procedure

  1. List the compute machine sets in your cluster by running the following command: tag:CAPI[]

    $ oc get machinesets.cluster.x-k8s.io -n openshift-cluster-api
    Example output
    NAME CLUSTER REPLICAS READY AVAILABLE AGE VERSION
    <compute_machine_set_name_1> <cluster_name> 1 1 1 26m
    <compute_machine_set_name_2> <cluster_name> 1 1 1 26m

    end:CAPI[] tag:MAPI[]

    $ oc get machinesets.machine.openshift.io -n openshift-machine-api
    Example output
    NAME DESIRED CURRENT READY AVAILABLE AGE
    <compute_machine_set_name_1> 1 1 1 1 55m
    <compute_machine_set_name_2> 1 1 1 1 55m

    end:MAPI[]

  2. Edit a compute machine set by running the following command: tag:CAPI[]

    $ oc edit machinesets.cluster.x-k8s.io <machine_set_name> \
    -n openshift-cluster-api

    end:CAPI[] tag:MAPI[]

    $ oc edit machinesets.machine.openshift.io <machine_set_name> \
    -n openshift-machine-api

    end:MAPI[]

  3. Note the value of the spec.replicas field, because you need it when scaling the machine set to apply the changes.

    #tag::CAPI[]
    apiVersion: cluster.x-k8s.io/v1beta1
    #end::CAPI[]
    #tag::MAPI[]
    apiVersion: machine.openshift.io/v1beta1
    #end::MAPI[]
    kind: MachineSet
    metadata:
    name: <machine_set_name>
    #tag::CAPI[]
    namespace: openshift-cluster-api
    #end::CAPI[]
    #tag::MAPI[]
    namespace: openshift-machine-api
    #end::MAPI[]
    spec:
    replicas: 2
    # ...

    The examples in this procedure show a compute machine set that has a replicas value of 2.

  4. Update the compute machine set CR with the configuration options that you want and save your changes.

  5. List the machines that are managed by the updated compute machine set by running the following command: tag:CAPI[]

    $ oc get machines.cluster.x-k8s.io \
    -n openshift-cluster-api \
    -l cluster.x-k8s.io/set-name=<machine_set_name>
    Example output for an AWS cluster
    NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION
    <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h
    <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h

    end:CAPI[] tag:MAPI[]

    $ oc get machines.machine.openshift.io \
    -n openshift-machine-api \
    -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Example output for an AWS cluster
    NAME PHASE TYPE REGION ZONE AGE
    <machine_name_original_1> Running m6i.xlarge us-west-1 us-west-1a 4h
    <machine_name_original_2> Running m6i.xlarge us-west-1 us-west-1a 4h

    end:MAPI[]

  6. For each machine that is managed by the updated compute machine set, set the delete annotation by running the following command: tag:CAPI[]

    $ oc annotate machines.cluster.x-k8s.io/<machine_name_original_1> \
    -n openshift-cluster-api \
    cluster.x-k8s.io/delete-machine="true"

    end:CAPI[] tag:MAPI[]

    $ oc annotate machine.machine.openshift.io/<machine_name_original_1> \
    -n openshift-machine-api \
    machine.openshift.io/delete-machine="true"

    end:MAPI[]

  7. To create replacement machines with the new configuration, scale the compute machine set to twice the number of replicas by running the following command: tag:CAPI[]

    $ oc scale --replicas=4 \
    machinesets.cluster.x-k8s.io <machine_set_name> \
    -n openshift-cluster-api

    end:CAPI[] tag:MAPI[]

    $ oc scale --replicas=4 \
    machineset.machine.openshift.io <machine_set_name> \
    -n openshift-machine-api

    end:MAPI[]

    The original example value of 2 is doubled to 4.

  8. List the machines that are managed by the updated compute machine set by running the following command: tag:CAPI[]

    $ oc get machines.cluster.x-k8s.io \
    -n openshift-cluster-api \
    -l cluster.x-k8s.io/set-name=<machine_set_name>
    Example output for an AWS cluster
    NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION
    <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h
    <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 4h
    <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Provisioned 55s
    <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Provisioning 55s

    end:CAPI[] tag:MAPI[]

    $ oc get machines.machine.openshift.io \
    -n openshift-machine-api \
    -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Example output for an AWS cluster
    NAME PHASE TYPE REGION ZONE AGE
    <machine_name_original_1> Running m6i.xlarge us-west-1 us-west-1a 4h
    <machine_name_original_2> Running m6i.xlarge us-west-1 us-west-1a 4h
    <machine_name_updated_1> Provisioned m6i.xlarge us-west-1 us-west-1a 55s
    <machine_name_updated_2> Provisioning m6i.xlarge us-west-1 us-west-1a 55s

    end:MAPI[]

    When the new machines are in the Running phase, you can scale the compute machine set to the original number of replicas.

  9. To remove the machines that were created with the old configuration, scale the compute machine set to the original number of replicas by running the following command: tag:CAPI[]

    $ oc scale --replicas=2 \
    machinesets.cluster.x-k8s.io <machine_set_name> \
    -n openshift-cluster-api

    end:CAPI[] tag:MAPI[]

    $ oc scale --replicas=2 \
    machineset.machine.openshift.io <machine_set_name> \
    -n openshift-machine-api

    end:MAPI[]

    The replicas parameter is set to the original example value of 2.

Verification

  • To verify that a machine created by the updated machine set has the correct configuration, examine the relevant fields in the CR for one of the new machines by running the following command: tag:CAPI[]

    $ oc describe machines.cluster.x-k8s.io <machine_name_updated_1> \
    -n openshift-cluster-api

    end:CAPI[] tag:MAPI[]

    $ oc describe machine.machine.openshift.io <machine_name_updated_1> \
    -n openshift-machine-api

    end:MAPI[]

  • To verify that the compute machines without the updated configuration are deleted, list the machines that are managed by the updated compute machine set by running the following command: tag:CAPI[]

    $ oc get machines.cluster.x-k8s.io \
    -n openshift-cluster-api \
    cluster.x-k8s.io/set-name=<machine_set_name>
    Example output while deletion is in progress for an AWS cluster
    NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION
    <machine_name_original_1> <cluster_name> <original_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
    <machine_name_original_2> <cluster_name> <original_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
    <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
    <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
    Example output when deletion is complete for an AWS cluster
    NAME CLUSTER NODENAME PROVIDERID PHASE AGE VERSION
    <machine_name_updated_1> <cluster_name> <updated_1_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m
    <machine_name_updated_2> <cluster_name> <updated_2_ip>.<region>.compute.internal aws:///us-east-2a/i-04e7b2cbd61fd2075 Running 18m

    end:CAPI[] tag:MAPI[]

    $ oc get machines.machine.openshift.io \
    -n openshift-machine-api \
    -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Example output while deletion is in progress for an AWS cluster
    NAME PHASE TYPE REGION ZONE AGE
    <machine_name_original_1> Deleting m6i.xlarge us-west-1 us-west-1a 4h
    <machine_name_original_2> Deleting m6i.xlarge us-west-1 us-west-1a 4h
    <machine_name_updated_1> Running m6i.xlarge us-west-1 us-west-1a 5m41s
    <machine_name_updated_2> Running m6i.xlarge us-west-1 us-west-1a 5m41s
    Example output when deletion is complete for an AWS cluster
    NAME PHASE TYPE REGION ZONE AGE
    <machine_name_updated_1> Running m6i.xlarge us-west-1 us-west-1a 6m30s
    <machine_name_updated_2> Running m6i.xlarge us-west-1 us-west-1a 6m30s

    end:MAPI[]

Additional resources