2.3. Driver Toolkit の使用
たとえば、Driver Toolkit は simple-kmod
と呼ばれる単純なカーネルモジュールを構築するベースイメージとして使用できます。
Driver Toolkit には、カーネルモジュールに署名するために必要な依存関係である openssl
、mokutil
、および keyutils
が含まれています。ただし、この例では、simple-kmod
カーネルモジュールは署名されていないため、Secure Boot
が有効になっているシステムにはロードできません。
2.3.1. クラスターでの simple-kmod ドライバーコンテナーをビルドし、実行します。 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- OpenShift Container Platform クラスターが実行中である。
-
クラスターのイメージレジストリー Operator の状態を
Managed
に設定している。 -
OpenShift CLI (
oc
) がインストールされている。 -
cluster-admin
権限があるユーザーとして OpenShift CLI にログインしている。
手順
namespace を作成します。以下に例を示します。
oc new-project simple-kmod-demo
$ oc new-project simple-kmod-demo
YAML は、
simple-kmod
ドライバーコンテナーイメージを保存するImageStream
と、コンテナーをビルドするBuildConfig
を定義します。この YAML を0000-buildconfig.yaml.template
として保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドで、“DRIVER_TOOLKIT_IMAGE” の代わりに、実行中の OpenShift Container Platform バージョンのドライバーツールキットイメージを置き換えます。
OCP_VERSION=$(oc get clusterversion/version -ojsonpath={.status.desired.version})
$ OCP_VERSION=$(oc get clusterversion/version -ojsonpath={.status.desired.version})
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DRIVER_TOOLKIT_IMAGE=$(oc adm release info $OCP_VERSION --image-for=driver-toolkit)
$ DRIVER_TOOLKIT_IMAGE=$(oc adm release info $OCP_VERSION --image-for=driver-toolkit)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sed "s#DRIVER_TOOLKIT_IMAGE#${DRIVER_TOOLKIT_IMAGE}#" 0000-buildconfig.yaml.template > 0000-buildconfig.yaml
$ sed "s#DRIVER_TOOLKIT_IMAGE#${DRIVER_TOOLKIT_IMAGE}#" 0000-buildconfig.yaml.template > 0000-buildconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下でイメージストリームおよびビルド設定を作成します。
oc create -f 0000-buildconfig.yaml
$ oc create -f 0000-buildconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ビルダー Pod が正常に完了したら、ドライバーコンテナーイメージを
DaemonSet
としてデプロイします。ホスト上でカーネルモジュールを読み込むには、特権付きセキュリティーコンテキストでドライバーコンテナーを実行する必要があります。以下の YAML ファイルには、ドライバーコンテナーを実行するための RBAC ルールおよび
DaemonSet
が含まれます。この YAML を1000-drivercontainer.yaml
として保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RBAC ルールおよびデーモンセットを作成します。
oc create -f 1000-drivercontainer.yaml
$ oc create -f 1000-drivercontainer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pod がワーカーノードで実行された後に、
simple_kmod
カーネルモジュールがlsmod
のホストマシンで正常に読み込まれることを確認します。Pod が実行されていることを確認します。
oc get pod -n simple-kmod-demo
$ oc get pod -n simple-kmod-demo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-1-build 0/1 Completed 0 6m simple-kmod-driver-container-b22fd 1/1 Running 0 40s simple-kmod-driver-container-jz9vn 1/1 Running 0 40s simple-kmod-driver-container-p45cc 1/1 Running 0 40s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-1-build 0/1 Completed 0 6m simple-kmod-driver-container-b22fd 1/1 Running 0 40s simple-kmod-driver-container-jz9vn 1/1 Running 0 40s simple-kmod-driver-container-p45cc 1/1 Running 0 40s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドライバーコンテナー Pod で
lsmod
コマンドを実行します。oc exec -it pod/simple-kmod-driver-container-p45cc -- lsmod | grep simple
$ oc exec -it pod/simple-kmod-driver-container-p45cc -- lsmod | grep simple
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow