Configuration recommendations for compute node types¶
This section contains recommendations for configuration of an
OpenStackDeployment
custom resource for the compute nodes
of the following types:
Compute nodes with the default configuration, without local NVMe storage and SR-IOV network interface cards (NICs)
Compute nodes with the NVMe local storage
Compute nodes with the SR-IOV NICs
Compute nodes with both the NVMe local storage and SR-IOV NICs
Note
If the local NVMe storage is enabled, Mirantis recommends using it and enable SR-IOV if possible.
Caution
Before using the NVMe local storage and mount point, define them
in BareMetalHostProfile
. For example:
apiVersion: metal3.io/v1alpha1
kind: BareMetalHostProfile
...
spec:
devices:
...
- device:
byName: /dev/nvme0n1
minSizeGiB: 30
wipe: true
partitions:
- name: local-volumes-partition
sizeGiB: 0
wipe: true
...
fileSystems:
...
- fileSystem: ext4
partition: local-volumes-partition
# mountpoint for Nova images
mountPoint: /var/lib/nova
Caution
To control the storage type (local NVMe or Ceph) for virtual machines, place a node into the OpenStack aggregate. For details, see OpenStack documentation: Host aggregates.
As defined in Node-specific configuration, each node with a non-default configuration
must be configured separately. Each Machine
object must have a
configuration-specific label. For example, for a compute node with the local
NVMe storage:
apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
...
spec:
providerSpec:
value:
nodeLabels:
- key: node-type
value: compute-nvme
Caution
The <NODE-LABEL>
value must match one of the allowed labels
defined in the nodeLabels
section of the Cluster
object:
nodeLabels:
- key: <NODE-LABEL>
value: <NODE-LABEL-VALUE>
Mirantis recommends using node-type
as the <NODE-LABEL>
key. To view
the full list of allowed node labels:
kubectl \
-n <NAMESPACE> \
get <CLUSTER-NAME> \
-o json \
| jq .status.providerStatus.releaseRefs.current.allowedNodeLabels
The list of node labels is read-only and cannot be modified.
For compute nodes with the SR-IOV NIC, use compute-sriov
as the
node-type
value of nodeLabels
:
apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
...
spec:
providerSpec:
value:
nodeLabels:
- key: node-type
value: compute-sriov
For compute nodes with the local NVMe storage and SR-IOV NICs, use the
compute-nvme-sriov
as the node-type
value of nodeLabels
:
apiVersion: cluster.k8s.io/v1alpha1
kind: Machine
...
spec:
providerSpec:
value:
nodeLabels:
- key: node-type
value: compute-nvme-sriov
In the examples above, compute-sriov
, compute-nvme-sriov
, and
compute-nvme
are human-readable string identifiers. You can use any unique
string value for each type of compute node.
In the OpenStackDeployment
object of each node group, define its own
section that starts with <NODE-LABEL>::<NODE-LABEL-VALUE>:
:
apiVersion: lcm.mirantis.com/v1alpha1
kind: OpenStackDeployment
...
spec:
...
nodes:
node-type::compute-nvme:
features:
nova:
images:
backend: local
node-type::compute-sriov:
features:
neutron:
sriov:
enabled: true
nics:
- device: enp10s0f1
num_vfs: 7
physnet: tenant
node-type::compute-nvme-sriov:
features:
nova:
images:
backend: local
neutron:
sriov:
enabled: true
nics:
- device: enp10s0f1
num_vfs: 7
physnet: tenant