8.8. 热插二级网络接口
您可以在不停止虚拟机(VM)的情况下添加或删除二级网络接口。OpenShift Virtualization 支持热插和热拔使用 VirtIO 设备驱动程序的 Linux 网桥接口。
热插和热拔桥接网络接口只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
8.8.1. virtio 限制
每个 VirtIO 接口使用虚拟机中的有限 Peripheral Connect Interface (PCI) 插槽之一。总共有 32 个插槽可用。PCIe 插槽也被其他设备使用,必须提前保留,因此插槽可能按需提供。OpenShift Virtualization 为热插接口保留最多四个插槽。这包括任何现有插入的网络接口。例如,如果您的虚拟机有两个现有的 plugged 接口,您可以热插两个网络接口。
可用于热插的实际插槽数量也取决于机器类型。例如,q35 机器类型的默认 PCI 拓扑支持热插一个额外的 PCIe 设备。有关 PCI 拓扑和热插支持的更多信息,请参阅 libvirt 文档。
如果在热插接口后重启虚拟机,则该接口就成为标准网络接口的一部分。
8.8.2. 使用 CLI 热插网桥网络接口
在虚拟机运行时热插到虚拟机(VM)的桥接网络接口。
先决条件
- 网络附加定义与虚拟机相同的命名空间中配置。
-
已安装
virtctl
工具。
流程
如果要热插网络接口的虚拟机没有运行,请使用以下命令启动它:
$ virtctl start <vm_name> -n <namespace>
使用以下命令,将新网络接口热插到正在运行的虚拟机中。
virtctl addinterface
命令向虚拟机和虚拟机实例(VMI)规格添加新网络接口,但不会将其附加到正在运行的虚拟机中。$ virtctl addinterface <vm_name> --network-attachment-definition-name <net_attach_dev_namespace>/<net_attach_def_name> --name <interface_name>
其中:
- <vm_name>
-
VirtualMachine
对象的名称。 - <net_attach_def_name>
-
NetworkAttachmentDefinition
对象的名称。 - <net_attach_dev_namespace>
-
与
NetworkAttachmentDefinition
对象关联的命名空间的标识符。支持的值是default
或虚拟机所在的命名空间的名称。 - <interface_name>
- 新网络接口的名称。
要将网络接口附加到正在运行的虚拟机中,请使用以下命令实时迁移虚拟机:
$ virtctl migrate <vm_name>
验证
使用以下命令验证虚拟机实时迁移是否成功:
$ oc get VirtualMachineInstanceMigration -w
输出示例
NAME PHASE VMI kubevirt-migrate-vm-lj62q Scheduling vm-fedora kubevirt-migrate-vm-lj62q Scheduled vm-fedora kubevirt-migrate-vm-lj62q PreparingTarget vm-fedora kubevirt-migrate-vm-lj62q TargetReady vm-fedora kubevirt-migrate-vm-lj62q Running vm-fedora kubevirt-migrate-vm-lj62q Succeeded vm-fedora
通过检查 VMI 状态来验证新接口是否已添加到虚拟机中:
$ oc get vmi vm-fedora -ojsonpath="{ @.status.interfaces }"
输出示例
[ { "infoSource": "domain, guest-agent", "interfaceName": "eth0", "ipAddress": "10.130.0.195", "ipAddresses": [ "10.130.0.195", "fd02:0:0:3::43c" ], "mac": "52:54:00:0e:ab:25", "name": "default", "queueCount": 1 }, { "infoSource": "domain, guest-agent, multus-status", "interfaceName": "eth1", "mac": "02:d8:b8:00:00:2a", "name": "bridge-interface", 1 "queueCount": 1 } ]
- 1
- 热插接口会出现在 VMI 状态中。
8.8.3. 使用 CLI 热拔网桥网络接口
您可以从正在运行的虚拟机(VM)中删除桥接网络接口。
先决条件
- 您的虚拟机必须正在运行。
- 虚拟机必须在运行 OpenShift Virtualization 4.14 或更高版本的集群中创建。
- 虚拟机必须附加了一个桥接网络接口。
流程
运行以下命令来热拔网桥网络接口。
virtctl removeinterface
命令从客户机中分离网络接口,但接口仍然存在于 pod 中。$ virtctl removeinterface <vm_name> --name <interface_name>
通过迁移虚拟机从 pod 中删除接口:
$ virtctl migrate <vm_name>