9.12.12. USB ホストパススルーの設定
クラスター管理者は、クラスター内の USB デバイスを公開できます。これにより、デバイスは仮想マシン(VM)の所有者が仮想マシンに割り当てることができます。この USB デバイスのパススルーを有効にすると、仮想マシンは、ハードウェアと仮想マシンが物理的に接続されているかのように、OpenShift Container Platform ノードに接続されている USB ハードウェアに接続できます。
USB デバイスを公開するには、まずホストパススルーを有効にしてから、USB デバイスを使用するように仮想マシンを設定します。
9.12.12.1. USB ホストパススルーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
USB デバイスを仮想マシン(VM)に割り当てるには、まずクラスターレベルで USB ホストパススルーを有効にする必要があります。
これを行うには、最初に追加する各デバイスにリソース名と USB デバイス名を指定してから、仮想マシンに割り当てます。複数のデバイスを、それぞれ HyperConverged カスタムリソース(CR)の selector として知られている、単一のリソース名に割り当てることができます。クラスターに同一の USB デバイスが複数ある場合には、仮想マシンを特定のデバイスに割り当てるように選択できます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。 -
OpenShift CLI (
oc) がインストールされている。
手順
HostDevices機能ゲートが有効になっていることを確認します。$ oc get featuregate cluster -o yaml正常な出力
featureGates: # ... enabled: - name: HostDevicesUSB デバイスベンダーおよび製品を特定します。
$ lsusb出力例
Bus 003 Device 007: ID 1b1c:0a60 example_manufacturer example_product_namelsusbコマンドを使用できない場合は、ホストの/sys/bus/usb/devices/ディレクトリーの USB デバイス設定を調べます。for dev in *; do if [[ -f "$dev/idVendor" && -f "$dev/idProduct" ]]; then echo "Device: $dev" echo -n " Manufacturer : "; cat "$dev/manufacturer" echo -n " Product: "; cat "$dev/product" echo -n " Vendor ID : "; cat "$dev/idVendor" echo -n " Product ID: "; cat "$dev/idProduct" echo fi done出力例
Device: 3-7 Manufacturer : example_manufacturer Product: example_product_name Vendor ID : 1b1c Product ID: 0a60
必要な USB デバイスを
HyperConveredCR のpermittedHostDevicesスタンザに追加します。以下の例では、ベンダー ID045eおよび製品 ID07a5のデバイスを追加します。oc patch hyperconverged kubevirt-hyperconverged \ -n openshift-cnv \ --type=merge \ -p '{ "metadata": { "annotations": { "kubevirt.kubevirt.io/jsonpatch": "[{\"op\": \"add\", \"path\": \"/spec/permittedHostDevices/usbHostDevices/-\", \"value\": {\"resourceName\": \"kubevirt.io/peripherals\", \"selectors\": [{\"vendor\": \"045e\", \"product\": \"07a5\"}]}}]" } } }'
検証
HCO CR に必要な USB デバイスが含まれていることを確認します。
$ oc get hyperconverged kubevirt-hyperconverged -n openshift-cnv出力例
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: permittedHostDevices:1 usbHostDevices:2 - resourceName: kubevirt.io/peripherals3 selectors: - vendor: "045e" product: "07a5" - vendor: "062a" product: "4102" - vendor: "072f" product: "b100"