8.9. 热插二级网络接口
您可以在不停止虚拟机(VM)的情况下添加或删除二级网络接口。OpenShift Virtualization 支持热插和热拔使用桥接绑定和 VirtIO 设备驱动程序的二级接口。OpenShift Virtualization 还支持热插使用 SR-IOV 绑定的二级接口。
单根 I/O 虚拟化(SR-IOV) 接口不支持热拔。
8.9.1. virtio 限制 复制链接链接已复制到粘贴板!
每个 VirtIO 接口使用虚拟机中的有限 Peripheral Connect Interface (PCI) 插槽之一。总共有 32 个插槽可用。PCIe 插槽也被其他设备使用,必须提前保留,因此插槽可能按需提供。OpenShift Virtualization 为热插接口保留最多四个插槽。这包括任何现有插入的网络接口。例如,如果您的虚拟机有两个现有的 plugged 接口,您可以热插两个网络接口。
可用于热插的实际插槽数量也取决于机器类型。例如,q35 机器类型的默认 PCI 拓扑支持热插一个额外的 PCIe 设备。有关 PCI 拓扑和热插支持的更多信息,请参阅 libvirt 文档。
如果在热插接口后重启虚拟机,则该接口就成为标准网络接口的一部分。
8.9.2. 使用 CLI 热插二级网络接口 复制链接链接已复制到粘贴板!
在虚拟机运行时,热插到虚拟机(VM)的二级网络接口。
先决条件
- 网络附加定义与虚拟机相同的命名空间中配置。
- 您要热插网络接口的虚拟机正在运行。
-
已安装
virtctl
工具。 -
有创建并列出
VirtualMachineInstanceMigration
对象的权限。 -
已安装 OpenShift CLI(
oc
)。
流程
使用您的首选文本编辑器编辑
VirtualMachine
清单,如下例所示:虚拟机配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将网络接口附加到正在运行的虚拟机中,请运行以下命令来实时迁移虚拟机:
virtctl migrate <vm_name>
$ virtctl migrate <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
使用以下命令验证虚拟机实时迁移是否成功:
oc get VirtualMachineInstanceMigration -w
$ oc get VirtualMachineInstanceMigration -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过检查 VMI 状态来验证新接口是否已添加到虚拟机中:
oc get vmi vm-fedora -ojsonpath="{ @.status.interfaces }"
$ oc get vmi vm-fedora -ojsonpath="{ @.status.interfaces }"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 热插接口会出现在 VMI 状态中。
8.9.3. 使用 CLI 热拔二级网络接口 复制链接链接已复制到粘贴板!
您可以从正在运行的虚拟机(VM)中删除二级网络接口。
单根 I/O 虚拟化(SR-IOV) 接口不支持热拔。
先决条件
- 您的虚拟机必须正在运行。
- 虚拟机必须在运行 OpenShift Virtualization 4.14 或更高版本的集群中创建。
- 虚拟机必须附加了一个桥接网络接口。
流程
编辑虚拟机规格以热拔二级网络接口。将接口状态设置为
absent
从客户机中分离网络接口,但接口仍然存在于 pod 中。oc edit vm <vm_name>
$ oc edit vm <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 虚拟机配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将接口状态设置为
absent
,将其从正在运行的虚拟机中分离。从虚拟机规格中删除接口详情不会热拔二级网络接口。
通过迁移虚拟机从 pod 中删除接口:
virtctl migrate <vm_name>
$ virtctl migrate <vm_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow