Create a machine using CLI¶
This section describes adding machines to a new MOSK cluster using Mirantis Container Cloud CLI.
If you need to add more machines to an existing MOSK cluster, see Add a controller node and Add a compute node.
To add machine to the MOSK cluster:
Log in to the host where your management cluster
kubeconfig
is located and where kubectl is installed.Create a new text file
mosk-cluster-machines.yaml
and create the YAML definitons of theMachine
resources. Use this as an example, and see the descriptions of the fields below:apiVersion: cluster.k8s.io/v1alpha1 kind: Machine metadata: name: mosk-node-role-name namespace: mosk-project labels: kaas.mirantis.com/provider: baremetal kaas.mirantis.com/region: region-one cluster.sigs.k8s.io/cluster-name: mosk-cluster spec: providerSpec: value: apiVersion: baremetal.k8s.io/v1alpha1 kind: BareMetalMachineProviderSpec bareMetalHostProfile: name: mosk-k8s-mgr namespace: mosk-project l2TemplateSelector: name: mosk-k8s-mgr hostSelector: {} l2TemplateMappingOverride: []
Note
The
kaas.mirantis.com/region
label is removed from all Container Cloud and MOSK objects in 24.1.Therefore, do not add the label starting with these releases. On existing clusters updated to these releases, or if added manually, Container Cloud ignores this label.
Add the top level fields:
apiVersion
API version of the object that is
cluster.k8s.io/v1alpha1
.
kind
Object type that is
Machine
.
metadata
This section will contain the metadata of the object.
spec
This section will contain the configuration of the object.
Add mandatory fields to the
metadata
section of theMachine
object definition.name
The name of the
Machine
object.
namespace
The name of the Project where the
Machine
will be created.
labels
This section contains additional metadata of the machine. Set the following mandatory labels for the
Machine
object.kaas.mirantis.com/provider
Set to
"baremetal"
.
kaas.mirantis.com/region
Region name that matches the region name in the
Cluster
object.
cluster.sigs.k8s.io/cluster-name
The name of the cluster to add the machine to.
Note
The
kaas.mirantis.com/region
label is removed from all Container Cloud and MOSK objects in 24.1.Therefore, do not add the label starting with these releases. On existing clusters updated to these releases, or if added manually, Container Cloud ignores this label.
Configure the mandatory parameters of the
Machine
object inspec
field. AddproviderSpec
field that contains parameters for deployment on bare metal in a form of Kubernetes subresource.In the
providerSpec
section, add the following mandatory configuration parameters:apiVersion
API version of the subresource that is
baremetal.k8s.io/v1alpha1
.
kind
Object type that is
BareMetalMachineProviderSpec
.
bareMetalHostProfile
Reference to a configuration profile of a bare metal host. It helps to pick bare metal host with suitable configuration for the machine. This section includes two parameters:
name
Name of a bare metal host profile
namespace
Project in which the bare metal host profile is created.
l2TemplateSelector
If specified, contains the
name
(first priority) orlabel
of the L2 template that will be applied during a machine creation. Note that changing this field afterMachine
object is created will not affect the host network configuration of the machine.You should assign one of the templates you defined in Create L2 templates to the machine. If there is no suitable templates, you should create one per Create L2 templates.
hostSelector
This parameter defines matching criteria for picking a bare metal host for the machine by label.
Any custom label that is assigned to one or more bare metal hosts using API can be used as a host selector. If the
BareMetalHost
objects with the specified label are missing, theMachine
object will not be deployed until at least one bare metal host with the specified label is available.See Deploy a machine to a specific bare metal host for details.
l2TemplateIfMappingOverride
This parameter contains a list of names of network interfaces of the host. It allows to override the default naming and ordering of network interfaces defined in L2 template referenced by the
l2TemplateSelector
. This ordering informs the L2 templates how to generate the host network configuration.See Override network interfaces naming and order for details.
Depending on the role of the machine in the MOSK cluster, add labels to the
nodeLabels
field.This field contains the 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 statusproviderStatus.releaseRef.current.allowedNodeLabels
field.If the
value
field is not defined inallowedNodeLabels
, a label can have any value. For example:allowedNodeLabels: - displayName: Stacklight key: stacklight
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
inmachine.yaml
. For example:nodeLabels: - key: stacklight value: enabled
Adding of a node label that is not available in the list of allowed node labels is restricted.
If you are NOT deploying MOSK with the compact control plane, add 3 dedicated Kubernetes manager nodes.
Add 3
Machine
objects for Kubernetes manager nodes using the following label:metadata: labels: cluster.sigs.k8s.io/control-plane: "true"
Note
The value of the label might be any non-empty string. On a worker node, this label must be omitted entirely.
Add 3
Machine
objects for MOSK controller nodes using the following labels:spec: providerSpec: value: nodeLabels: openstack-control-plane: enabled openstack-gateway: enabled
If you are deploying MOSK with compact control plane, add
Machine
objects for 3 combined control plane nodes using the following labels and parameters to thenodeLabels
field:metadata: labels: cluster.sigs.k8s.io/control-plane: true spec: providerSpec: value: nodeLabels: openstack-control-plane: enabled openstack-gateway: enabled openvswitch: enabled
Add
Machine
objects for as many compute nodes as you want to install using the following labels:spec: providerSpec: value: nodeLabels: openstack-compute-node: enabled openvswitch: enabled
Save the text file and repeat the process to create configuration for all machines in your MOSK cluster.
Create machines in the cluster using command:
kubectl create -f mosk-cluster-machines.yaml
Proceed to Add a Ceph cluster.
See also