9.3. Generic Device Plugin の設定
MicroShift の Generic Device Plugin は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
MicroShift では、Generic Device Plugin (GDP) はデフォルトで無効になっています。GDP を使用するには、GDP を有効にし、Kubernetes アプリケーションがアクセスできるホストデバイスを指定する必要があります。GDP を有効にするには、MicroShift config.yaml ファイルを変更するか、設定スニペットファイルを作成する必要があります。たとえば、/etc/microshift/config.d/10-gdp.yaml です。
前提条件
- MicroShift をインストールしている。
-
/etc/microshiftディレクトリーにカスタムconfig.yamlファイルを作成した。 -
OpenShift CLI (
oc) がインストールされている。 -
MicroShift ホストに対する
sudo特権を持っている。 -
MicroShift ノードに公開するホストデバイスを特定した。たとえば、
/dev/video0、/dev/ttyUSB*、または USB のベンダー ID や製品 ID などです。
手順
-
CLI から
sudo特権を使用して、テキストエディターで/etc/microshift/config.yamlを開きます。 -
genericDevicePluginセクションを見つけます。存在しない場合は追加します。 statusパラメーターをEnabledに設定し、公開するdevicesを定義します。各デバイス定義には、nameと 1 つ以上のgroupsが必要です。各グループにおいて、glob パターンを含むファイルベースのデバイスの場合はpathsを使用して、ベンダー/製品 ID を使用する USB デバイスの場合はusbsを使用してデバイスを指定できます。同じデバイスグループ内でpathsとusbsを混在させることはできません。デフォルト値を持つ GDP フィールド
apiServer: # ... genericDevicePlugin: devices: - groups: - paths: - path: /dev/ttyUSB*1 - path: /dev/ttyACM*2 name: serial - groups: - paths: - path: /dev/fuse3 name: fuse4 - groups: - usbs:5 - product: "0x7523"6 serial: "" vendor: "0x1a86"7 name: converter domain: device.microshift.io8 status: Enabled重要-
microshift show-configパラメーターの出力には、config.yamlで明示的に設定していない場合でも、シリアルデバイスの事前設定されたデフォルトパスが含まれる場合があります。これらのパスは、特定のユーザー設定なしで Generic Device Plugin が有効になっている場合のデフォルトの検出設定を表します。 -
特に複数の類似デバイスを扱う場合、一貫性と正確なデバイスターゲティングを実現するには、
/dev/ttyUSB*のような広範な glob パターンではなく、/dev/serial/by-id/のような安定したデバイスパスや、特定の USB ベンダー ID、製品 ID、シリアル ID の使用を検討してください。 -
デバイスグループの
countパラメーターを使用すると、単一のデバイス、または glob に一致するデバイスのセットを、異なる Pod に同時に複数回割り当てることができます。省略した場合、countはデフォルトで1になります。
-
-
config.yamlファイルを保存します。 MicroShift サービスを再起動して変更を適用します。
$ sudo systemctl restart microshiftMicroShift が再起動し、GDP がデバイスを Kubelet に登録するまでしばらくお待ちください。
検証
次のコマンドを実行して、ノードで使用可能なデバイスを確認できます。
$ oc describe node <microshift_node_name> | grep "device.microshift.io"1 - 1
- <microshift_node_name> は、ノード名に置き換えます。
設定に応じて、MicroShift ノード内でデバイスが検出およびスケジュール可能になったことを示す出力が表示されます。
出力例
Capacity: cpu: 2 device.microshift.io/audio: 0 device.microshift.io/capture: 0 device.microshift.io/custom-device: 1 device.microshift.io/dummy-video: 0 device.microshift.io/fuse: 0 device.microshift.io/serial: 5 device.microshift.io/video: 0 Allocatable: cpu: 2 device.microshift.io/audio: 0 device.microshift.io/capture: 0 device.microshift.io/custom-device: 1 device.microshift.io/dummy-video: 0 device.microshift.io/fuse: 0 device.microshift.io/serial: 5 device.microshift.io/video: 0 Allocated resources: (Total limits may be over 100 percent, i.e., overcommitted.) Resource Requests Limits -------- -------- ------ cpu 450m (22%) 500m (25%) memory 1550Mi (42%) 500Mi (13%) ephemeral-storage 0 (0%) 0 (0%) hugepages-1Gi 0 (0%) 0 (0%) hugepages-2Mi 0 (0%) 0 (0%) device.microshift.io/audio 0 0 device.microshift.io/capture 0 0 device.microshift.io/custom-device 1 1 device.microshift.io/dummy-video 1 1 device.microshift.io/fuse 0 0 device.microshift.io/serial 0 0 device.microshift.io/video 0 0