本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

PCI设备控制器

在SUSE®虚拟化中,`PCIDevice`表示具有PCI地址的主机设备。 可以通过创建`PCIDeviceClaim`资源或使用用户界面启用直通,将设备通过虚拟机监控器传递给虚拟机。通过超级管理程序传递设备意味着虚拟机可以直接访问该设备,并有效地拥有该设备。虚拟机甚至可以为该设备安装自己的驱动程序。

这可以通过使用`pcidevices-controller`附加产品来实现。

要使用PCI设备功能,用户需要先启用`pcidevices-controller`附加产品。

EnableAddon

一旦`pcidevices-controller`附加产品成功部署,它需要几分钟来扫描并使 PCIDevice CRD 可用。

PcideviceEnabled

在PCI设备上启用直通

  1. 现在转到`Advanced → PCI Devices`页面:

    advanced pcidevices index
  2. 按供应商名称(例如NVIDIA、Intel等)或设备名称搜索您的设备。

    search pcidevices
  3. 选择您想要启用直通的设备:

    select pcidevices
  4. 然后点击*启用直通*并阅读警告信息。如果您仍然想启用这些设备,请点击*启用*并等待所有设备被`Enabled`。

    请不要使用`host-owned` PCI设备(例如,管理和VLAN网卡)。不正确的设备分配可能会对您的集群造成损害,包括节点故障。

    enable pcidevices inprogress
    enable pcidevices done

将PCI设备附加到虚拟机

启用这些PCI设备后,您可以导航到*虚拟机*页面并选择*编辑配置*以传递这些设备。

vm pcidevices edit config

选择*PCI设备*并使用*可用PCI设备*下拉菜单。从显示的列表中选择您想要附加的设备,然后点击*保存*。

vm pcidevices attach

在虚拟机中使用直通的 PCI设备

启动虚拟机,并在虚拟机中运行 lspci,附加的 PCI 设备将会显示出来,尽管虚拟机中的 PCI 地址不一定与主机中的 PCI 地址匹配。

在虚拟机中为您的 PCI 设备安装驱动程序

这就像在主机中安装驱动程序一样。PCI 直通功能将主机设备绑定到 vfio-pci 驱动程序,这使得虚拟机能够使用它们自己的驱动程序。

已知问题

  • 问题 #6648:如果集群中有多个相同的 PCI 设备实例,虚拟机可能会被调度到错误的节点上。

pcidevices-controller 附加产品目前使用唯一资源描述符将设备发布到 kubelet。如果集群中存在多个相同设备类型的 PCIDeviceClaims,则这些 PCIDeviceClaims 使用相同的唯一资源描述符,因此虚拟机可能会被调度到错误的节点上。为了确保使用正确的设备和节点,在配置 节点调度 设置时选择 在特定节点上运行虚拟机

vm scheduling

SR-IOV 网络设备

SriovNetworkDevicesLink

pcidevices-controller 附加产品现在可以扫描底层主机上的网络接口,并检查它们是否支持 SRIOV 虚拟功能 (VFs)。如果找到有效设备,pcidevices-controller 将生成一个新的 SRIOVNetworkDevice 对象。

SriovNetworkDevicesList

要在 SriovNetworkDevice 上创建 VFs,您可以点击 ⋮ → 启用,然后定义 虚拟功能数量

SriovNetworkDeviceEnable
SriovNetworkVFDefinition

pcidevices-controller 将在网络接口上定义 VFs,并报告新创建的 VFs 的新 PCI 设备状态。

SriovNetworkDevicesVFStatus

在下次重新扫描时,pcidevices-controller 将为 VFs 创建 PCI设备。这可能需要最多 1 分钟。

您现在可以导航到 PCI 设备 页面以查看新设备。

我们还引入了一个新过滤器,以帮助您按底层网络接口过滤 PCI 设备。

SriovNetworkDevicesFilter

新创建的 PCI 设备可以像其他任何 PCI 设备一样传递给虚拟机。

SriovNetworkDevicesFilterResult

USB 设备

在 Harvester 中,USBDevice 资源代表节点上的 USB 设备。USB 设备可以被超级管理程序 "直通",以允许虚拟机直接访问。这是通过 pcidevices-controller 附加产品完成的。要使用 USB 直通,您可以创建一个 USBDeviceClaim 资源或在 Harvester 用户界面上启用该功能。

USB 直通与 PCI 直通略有不同。例如,您可以通过创建一个 PCIDeviceClaim 完全控制一个带有四个 USB 端口的 USB 控制器。但是,您也可以创建一个 USBDeviceClaim 仅控制一个 USB 端口。其他三个 USB 端口仍然可用于节点。

在您移除 USB 设备之前,请先将其从虚拟机中分离,然后在 USB 设备 屏幕上禁用直通。

在 USB 设备上启用直通

  1. 在 Harvester 用户界面上,转到 高级 → USB 设备

    index
  2. 在列表中找到设备。

    search
  3. 选择目标设备,然后选择 ⋮ → 启用直通

    select
  4. 阅读确认消息,然后点击 启用

    请稍等,直到设备状态更改为 已启用

    enable done

将 USB 设备连接到虚拟机

  1. 验证目标设备上是否启用了直通。

  2. 转到 虚拟机,然后创建一个虚拟机或编辑现有虚拟机的配置。

  3. 在虚拟机配置屏幕上,转到 USB 设备 选项卡,然后从 可用 USB 设备 列表中选择一个设备。

    attach vm
  4. 点击 创建保存

查看附加到虚拟机的 USB 设备

  1. 启动并访问虚拟机。

  2. 运行 lsusb

    此工具显示有关 USB 总线和附加设备的信息。

    usb in vm

局限性

  • 附加 USB 设备的虚拟机无法进行实时迁移,因为设备绑定到特定节点。

  • 不支持热插拔和重新插拔 USB 设备。有关更多信息,请参见 KubeVirt 问题 #11979

  • 如果在重新连接设备或重启节点时设备路径发生变化,您必须从虚拟机中分离设备,然后再次启用直通。