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.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下でイメージストリームおよびビルド設定を作成します。
oc create -f 0000-buildconfig.yaml
$ oc create -f 0000-buildconfig.yamlCopy 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.yamlCopy 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-demoCopy 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 40sCopy 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 simpleCopy 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 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow