PCI 设备(实验功能)

从 v1.1.0 起可用

在 Harvester 中,PCIDevice 指的是具有 PCI 地址的主机设备。 你可以创建 PCIDeviceClaim 资源或使用 UI,通过虚拟机监控程序将设备直通到 VM。通过虚拟机监控程序直通设备后,VM 可以直接访问设备并高效地使用设备。虚拟机甚至可以安装该设备的驱动程序。

该过程是通过 pcidevices-controller 插件来完成的。

要使用 PCI 设备功能,你需要先启用 pcidevices-controller 插件。

PCI 设备 - 图1

在 PCI 设备上启用直通

  1. 前往 Advanced > PCI Devices 页面:

    PCI 设备 - 图2

  2. 通过输入提供商名称(例如 NVIDIA、Intel 等)或设备名称搜索你的设备:

    PCI 设备 - 图3

  3. 选择要启用直通的设备:

    PCI 设备 - 图4

  4. 然后,单击 Enable Passthrough 并阅读警告消息。如果你想启用这些设备,请单击 Enable 并等待所有设备的状态变为 Enabled

    PCI 设备 - 图5警告

    请不要使用宿主机专用的 PCI 设备(例如,管理网络和 VLAN 网络的网卡)。错误的设备分配可能会损坏你的集群(包括节点故障)。

    PCI 设备 - 图6

    PCI 设备 - 图7

将 PCI 设备附加到 VM

启用这些 PCI 设备后,你可以导航到 Virtual Machines 页面并选择 Edit Config 来直通这些设备。

PCI 设备 - 图8

选择 PCI Devices 并使用 Available PCI Devices 下拉菜单。从显示的列表中选择要附加的设备,然后单击 Save

PCI 设备 - 图9

在 VM 内使用直通的 PCI 设备

启动 VM 并在 VM 中运行 lspci,即使 VM 中的 PCI 地址不一定与主机中的 PCI 地址匹配,附加的 PCI 设备也将显示在这里。

在 VM 内为 PCI 设备安装驱动程序

这里涉及的操作与在主机中安装驱动程序一样。PCI 透传功能将主机设备绑定到 vfio-pci 驱动程序,让 VM 能够使用自己的驱动程序。你可以查看安装在 VM 中的 NVIDIA 驱动程序的屏幕截图,其中包括证明设备驱动程序可以正常工作的 CUDA 示例。

已知问题

  1. 1.1.0 版本的 PCI 直通使用 vendorId:deviceId 来匹配 VM 与设备。换言之,如果多个设备具有相同的 vendorId:deviceId 对,KubeVirt 将随机选择分配给 VM 的设备。1.1.2 版本将使用新的 deviceplugin 实现来解决此问题。