Managing MAC address pools for network interfaces
KubeMacPool allocates MAC addresses for virtual machine (VM) network interfaces from a shared MAC address pool. This ensures that each network interface is assigned a unique MAC address.
A virtual machine instance created from that VM retains the assigned MAC address across reboots.
KubeMacPool does not handle virtual machine instances created independently from a virtual machine.
Managing KubeMacPool by using the CLI
You can disable and re-enable KubeMacPool by using the command line.
KubeMacPool is enabled by default.
Prerequisites
- You have installed the OpenShift CLI (
oc).
Procedure
- To disable KubeMacPool in two namespaces, run the following command:
$ oc label namespace <namespace1> <namespace2> mutatevirtualmachines.kubemacpool.io=ignore
- To re-enable KubeMacPool in two namespaces, run the following command:
$ oc label namespace <namespace1> <namespace2> mutatevirtualmachines.kubemacpool.io-
Customizing the MAC pool range
KubeMacPool works by allocating MAC addresses to VMs from a range. The rangeStart and rangeEnd parameters in the HyperConverged custom resource (CR) define the MAC pool range.
As a cluster administrator, you can configure this range to ensure that MAC addresses for VMs hosted on OpenShift Virtualization do not conflict with other virtualization solutions on the same network.
Prerequisites
- You have cluster administrator access on an OpenShift Container Platform cluster.
- You have installed the OpenShift CLI (
oc).
Procedure
- Edit the
HyperConvergedCR by running the following command:$ oc edit hyperconvergeds.v1beta1.hco.kubevirt.io kubevirt-hyperconverged -n openshift-cnv - Update the
HyperConvergedCR to configure therangeStartandrangeEndparameters that define your required MAC address range:apiVersion: hco.kubevirt.io/v1beta1kind: HyperConvergedmetadata:name: kubevirt-hyperconvergedspec:kubeMacPoolConfiguration:rangeStart: "AA:00:00:00:00:00"rangeEnd: "FE:A8:11:22:33:44"# ...
Verification
-
Run the following command and observe the output:
$ oc get hyperconvergeds.v1beta1.hco.kubevirt.io kubevirt-hyperconverged -n openshift-cnv -o=jsonpath='{.spec.kubeMacPoolConfiguration}'If you have successfully applied the configuration changes, the output shows the new MAC pool range you have configured:
Example output:
{"rangeStart": "AA:00:00:00:00:00","rangeEnd": "FE:A8:11:22:33:44"} -
Optional. Create a new VM and run the following command to check the MAC address of the VM’s network interface:
$ oc get vmi <vm-name> -o=jsonpath='{.status.interfaces[0].macAddress}'Example output:
macAddress: AA:00:00:00:00:04If you have successfully applied the configuration changes, the
macAddressfield in the VM interface is within the range you specified in yourkubeMacPoolConfiguration, between the value ofrangeStartandrangeEnd.