9.17.6. 为虚拟机配置 PXE 启动
OpenShift Virtualization 中提供 PXE 启动或网络启动。网络启动支持计算机启动和加载操作系统或其他程序,无需本地连接的存储设备。例如,在部署新主机时,您可使用 PXE 启动从 PXE 服务器中选择所需操作系统镜像。
9.17.6.1. 使用指定的 MAC 地址的 PXE 引导 复制链接链接已复制到粘贴板!
作为管理员,您可首先为您的 PXE 网络创建 NetworkAttachmentDefinition 对象,以此通过网络引导客户端。然后在启动虚拟机实例前,在您的虚拟机实例配置文件中引用网络附加定义。
如果 PXE 服务器需要,您还可在虚拟机实例配置文件中指定 MAC 地址。
先决条件
- 必须已连接 Linux 网桥。
- PXE 服务器必须作为网桥连接至相同 VLAN。
-
已安装 OpenShift CLI(
oc)。
流程
在集群上配置 PXE 网络:
为 PXE 网络
pxe-net-conf创建网络附加定义文件:apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: pxe-net-conf spec: config: | { "cniVersion": "0.3.1", "name": "pxe-net-conf", "type": "bridge", "bridge": "bridge-interface", "macspoofchk": false, "vlan": 100, "disableContainerInterface": true, "preserveDefaultVlan": false }-
metadata.name指定NetworkAttachmentDefinition对象的名称。 -
spec.config.name指定配置的名称。建议您将配置名称与网络附加定义的name值匹配。 -
spec.config.type指定 Container Network Interface (CNI)插件的实际名称,该插件为这个网络附加定义提供网络。这个示例使用 Linux bridge CNI 插件。您还可以使用 OVN-Kubernetes localnet 或 SR-IOV CNI 插件。 -
spec.config.bridge指定节点上配置的 Linux 网桥的名称。 -
spec.config.macspoofchk是一个可选标志,以启用 MAC spoof 检查。当设置为true时,您无法更改 pod 或客户机接口的 MAC 地址。此属性只允许单个 MAC 地址退出 pod,从而可防止 MAC 欺骗攻击。 -
spec.config.vlan是一个可选的 VLAN 标签。节点网络配置策略不需要额外的 VLAN 配置。 -
spec.config.preserveDefaultVlan是一个可选标志,指示虚拟机是否通过默认 VLAN 连接到桥接。默认值为true。
-
使用您在上一步中创建的文件创建网络附加定义:
$ oc create -f pxe-net-conf.yaml编辑虚拟机实例配置文件以包括接口和网络的详情。
如果 PXE 服务器需要,请指定网络和 MAC 地址。如果未指定 MAC 地址,则会自动分配一个值。
请确保
bootOrder设置为1,以便该接口先启动。在本例中,该接口连接到了名为<pxe-net>的网络中:interfaces: - masquerade: {} name: default - bridge: {} name: pxe-net macAddress: de:00:00:00:00:de bootOrder: 1注意启动顺序对于接口和磁盘全局通用。
为磁盘分配一个启动设备号,以确保置备操作系统后能够正确启动。
将磁盘
bootOrder值设置为2:devices: disks: - disk: bus: virtio name: containerdisk bootOrder: 2指定网络连接到之前创建的网络附加定义。在这种情况下,
<pxe-net>连接到名为<pxe-net-conf>的网络附加定义:networks: - name: default pod: {} - name: pxe-net multus: networkName: pxe-net-conf
创建虚拟机实例:
$ oc create -f vmi-pxe-boot.yaml输出示例:
virtualmachineinstance.kubevirt.io "vmi-pxe-boot" created等待虚拟机实例运行:
$ oc get vmi vmi-pxe-boot -o yaml | grep -i phase phase: Running使用 VNC 查看虚拟机实例:
$ virtctl vnc vmi-pxe-boot- 查看启动屏幕,验证 PXE 启动是否成功。
登录虚拟机实例:
$ virtctl console vmi-pxe-boot
验证
验证虚拟机上的接口和 MAC 地址,并验证连接到网桥的接口是否具有指定的 MAC 地址。在本例中,我们使用了
eth1进行 PXE 启动,无需 IP 地址。另一接口eth0从 OpenShift Container Platform 获取 IP 地址。$ ip addr输出示例:
... 3. eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether de:00:00:00:00:de brd ff:ff:ff:ff:ff:ff