PCI 裝置
自 v1.1.0 版本起提供
在 Harvester 中,PCIDevice 代表具有 PCI 位址的主機裝置。
透過建立 PCIDeviceClaim 資源,或使用 UI 啟用直通 (passthrough),可以將這些裝置穿過 Hypervisor 直通給虛擬機器 (VM)。將裝置穿過 Hypervisor 直通意味著虛擬機器可以直接存取該裝置,並實質上擁有該裝置。虛擬機器甚至可以為該裝置安裝自己的驅動程式。
這是透過使用 pcidevices-controller 附加元件來完成的。
若要使用 PCI 裝置功能,使用者需要先啟用 pcidevices-controller 附加元件。

一旦 pcidevices-controller 附加元件部署成功,可能需要幾分鐘的時間進行掃描,PCIDevice CRD 才會變為可用狀態。

在 PCI 裝置上啟用直通 (Passthrough)
-
現在前往
Advanced -> PCI Devices頁面:
-
依供應商名稱(例如 NVIDIA、Intel 等)或裝置名稱搜尋您的裝置。

-
選取您想要啟用直通的裝置:

-
然後點擊 Enable Passthrough (啟用直通) 並閱讀警告訊息。如果您仍要啟用這些裝置,請點擊 Enable (啟用) 並等待所有裝置變為
Enabled(已啟用) 狀態。警告請勿使用「主機持有 (host-owned)」的 PCI 裝置(例如管理和 VLAN 網卡)。錯誤的裝置分配可能會對您的叢集造成損害,包括節點故障。


將 PCI 裝置掛接到 VM
啟用這些 PCI 裝置後,您可以導覽至 Virtual Machines (虛擬機器) 頁面並選取 Edit Config (編輯設定) 來直通這些裝置。

選取 PCI Devices 並使用 Available PCI Devices (可用的 PCI 裝置) 下拉式選單。從顯示的清單中選取您要掛接的裝置,然後點擊 Save (儲存)。

在 VM 內部使用已直通的 PCI 裝置
啟動 VM,並在 VM 內部執行 lspci,已掛接的 PCI 裝置將會顯示出來,儘管 VM 中的 PCI 位址不一定會與主機中的 PCI 位址相符。
在 VM 內部為您的 PCI 裝置安裝驅動程式
這就像在主機中安裝驅動程式一樣。PCI 直通功能會將主機裝置綁定到 vfio-pci 驅動程式,這使得 VM 能夠使用自己的驅動程式。
已知問題
- Issue #6648:如果叢集中有多個相同的 PCI 裝置實例,虛擬機器可能會被調度到錯誤的節點上。
pcidevices-controller 附加元件目前使用唯一的資源描述符 (unique resource descriptors) 將裝置發布給 kubelet。如果叢集中存在多個相同裝置類型的 PCIDeviceClaim,這些 PCIDeviceClaim 會使用相同的唯一資源描述符,因此虛擬機器可能會被調度到錯誤的節點。為確保使用正確的裝置和節點,請在設定 Node Scheduling (節點排程) 設定時選取 Run VM on specific node (在特定節點上執行 VM)。

SRIOV 網路裝置
自 v1.2.0 版本起提供

pcidevices-controller 附加元件現在可以掃描底層主機上的網路介面,並檢查它們是否支援 SRIOV 虛擬功能 (Virtual Functions, VFs)。如果找到有效的裝置,pcidevices-controller 將產生一個新的 SRIOVNetworkDevice 物件。

若要在 SriovNetworkDevice 上建立 VF,您可以點擊 ⋮ > Enable,然後定義 Number of Virtual Functions (虛擬功能數量)。


pcidevices-controller 將在網路介面上定義 VF,並回報新建立之 VF 的新 PCI 裝置狀態。

在下一次重新掃描時,pcidevices-controller 將為 VF 建立 PCIDevices。這可能需要 最多 1 分鐘的時間。
您現在可以導覽至 PCI Devices 頁面檢視新裝置。
我們也引入了一個新的過濾器,幫助您依底層網路介面過濾 PCI 裝置。

新建立的 PCI 裝置可以像任何其他 PCI 裝置一樣直通給虛擬機器。

USB 裝置
自 v1.4.0 版本起提供
Harvester 中的 USBDevice 資源代表節點上的 USB 裝置。USB 裝置可以由 Hypervisor「直通 (passed through)」,以允許 VM 直接存取。這是透過 pcidevices-controller 附加元件完成的。若要使用 USB 直通,您可以建立 USBDeviceClaim 資源或在 Harvester UI 上啟用該功能。
USB 直通與 PCI 直通略有不同。例如,您可以透過建立 PCIDeviceClaim 來完全控制具有四個 USB 連接埠的 USB 控制器。但是,您也可以建立 USBDeviceClaim 來僅控制一個 USB 連接埠。其他三個 USB 連接埠仍可供節點使用。
在移除 USB 裝置之前,請將其從虛擬機器中卸離,然後在 USB Devices 畫面上停用直通。
在 USB 裝置上啟用直通
-
在 Harvester UI 上,前往 Advanced > USB Devices。

-
在清單中找到該裝置。

-
選取目標裝置,然後選取 ⋮ > Enable Passthrough (啟用直通)。

-
閱讀確認訊息,然後點擊 Enable (啟用)。請稍待片刻,讓裝置狀態變更為 Enabled (已啟用)。
