9.4. 汎用デバイスを使用するアプリケーションのデプロイ
MicroShift で Generic Device Plugin (GDP) が設定され、有効になったら、公開したホストデバイスへのアクセスを要求する Pod、デプロイメント、StatefulSets などの Kubernetes ワークロードをデプロイできます。デバイスは、Pod を昇格した特権で実行しなくても、コンテナー内で利用できるようになります。
前提条件
- MicroShift をインストールしている。
- GDP を有効にして設定した。
-
OpenShift CLI (
oc) がインストールされている。
手順
Pod仕様でデバイスリクエストを定義します。apiVersion: v1 kind: Pod metadata: name: device-app spec: containers: - name: container image: <your_application_image>1 command: ["/path/to/your/app"]2 args: ["--device_path=/dev/video0"]3 resources: limits:4 device.microshift.io/video: 15 securityContext:6 allowPrivilegeEscalation: false capabilities: drop: ["ALL"] runAsNonRoot: true seccompProfile: type: "RuntimeDefault"次のコマンドを実行して、マニフェストを MicroShift ノードに適用し、Kubernetes ワークロードをデプロイします。
$ oc apply -f <your-workload-manifest.yaml>1 - 1
- <your_workload_manifest> は、ワークロードマニフェストの名前に置き換えます。
結果
Pod の実行後、指定されたホストデバイスは、コンテナー内の元のパス、または mountPath (指定されている場合) で使用できるようになります。アプリケーションは、ローカルデバイスであるかのように対話できるようになります。
たとえば、/dev/ttyUSB* にマッピングされる device.microshift.io/serial をリクエストした場合、アプリケーションは /dev/ttyUSB0 またはコンテナー内の同様のパスでデバイスを見つける可能性があります。
検証
実行中の Pod 内で次のコマンドを実行して、デバイスアクセスを検証します。
$ oc exec -it <pod_name> -- ls -l /dev/video01 - 1
- <pod_name> は、Pod の名前に置き換えます。