Configure node selectors for MetalLB speakers¶
By default, MetalLB speakers are deployed on all Kubernetes nodes except master nodes. You can configure MetalLB to run its speakers on a particular set of nodes. This decreases the number of nodes that should be connected to external network. In this scenario, only a few nodes are exposed for ingress traffic from the outside world.
To customize a node selector for a MetalLB speaker:
Using
kubeconfigof the MOSK management cluster, open the MOSKClusterobject for editing:kubectl --kubeconfig <pathToManagementClusterKubeconfig> -n <MOSKClusterNamespace> edit cluster <MOSKClusterName>
In the
spec:providerSpec:value:helmReleasessection, add thespeaker.nodeSelectorfield formetallb:spec: ... providerSpec: value: ... helmReleases: - name: metallb values: ... speaker: nodeSelector: metallbSpeakerEnabled: "true"
The
metallbSpeakerEnabled: "true"parameter in this example is the label on Kubernetes nodes where MetalLB speakers will be deployed. It can be an already existing node label or a new one.You can add user-defined labels to nodes using the
nodeLabelsfield.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
Clusterobject statusproviderStatus.releaseRef.current.allowedNodeLabelsfield.If the
valuefield 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.nodeLabelsinmachine.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.