This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. Special Resource Operator の使用
Special Resource Operator(SRO) は、ドライバーコンテナーのビルドおよびデプロイメント管理に使用されます。コンテナーのビルドおよびデプロイに必要なオブジェクトは Helm チャートに定義できます。
このセクションの例では、simple-kmod SpecialResource オブジェクトを使用して、Helm チャートを格納するために作成された ConfigMap オブジェクトをポイントしています。
3.3.1. 設定マップを使用した simple-kmod SpecialResource のビルドおよび実行 リンクのコピーリンクがクリップボードにコピーされました!
この例では、simple-kmod カーネルモジュールは、Special Resource Operator (SRO) がドライバーコンテナーを管理する方法を示しています。コンテナーは、設定マップに保存されている Helm チャートテンプレートで定義されます。
前提条件
- OpenShift Container Platform クラスターが実行中である。
-
クラスターのイメージレジストリー Operator の状態を
Managedに設定している。 -
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限があるユーザーとして OpenShift CLI にログインしている。 - Node Feature Discovery(NFD)Operator がインストールされている。
- SRO をインストールされている。
-
Helm CLI(
helm) がインストールされている。
手順
simple-kmod
SpecialResourceオブジェクトを作成するには、イメージをビルドするイメージストリームおよびビルド設定を定義し、コンテナーを実行するサービスアカウント、ロール、ロールバインディング、およびデーモンセットを定義します。カーネルモジュールを読み込めるように、特権付きセキュリティーコンテキストでデーモンセットを実行するにはサービスアカウント、ロール、およびロールバインディングが必要です。templatesディレクトリーを作成して、このディレクトリーに移動します。mkdir -p chart/simple-kmod-0.0.1/templates
$ mkdir -p chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow cd chart/simple-kmod-0.0.1/templates
$ cd chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージストリームおよびビルド設定の YAML テンプレートを
0000-buildconfig.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RBAC リソースおよびデーモンセットの以下の YAML テンプレートを
1000-driver-container.yamlとしてtemplatesディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow chart/simple-kmod-0.0.1ディレクトリーに移動します。cd ..
$ cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow チャートに関する以下の YAML を
Chart.yamlとしてchart/simple-kmod-0.0.1ディレクトリーに保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
chartディレクトリーから、helm packageコマンドを使用してチャートを作成します。helm package simple-kmod-0.0.1/
$ helm package simple-kmod-0.0.1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定マップを作成して、チャートファイルを保存します。
設定マップファイルのディレクトリーを作成します。
mkdir cm
$ mkdir cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートを
cmディレクトリーにコピーします。cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
$ cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートが含まれる Helm リポジトリーを指定してインデックスファイルを作成します。
helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
$ helm repo index cm --url=cm://simple-kmod/simple-kmod-chartCopy to Clipboard Copied! Toggle word wrap Toggle overflow Helm チャートで定義されるオブジェクトの namespace を作成します。
oc create namespace simple-kmod
$ oc create namespace simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定マップオブジェクトを作成します。
oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
$ oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
以下の
SpecialResourceマニフェストを使用して、設定マップで作成した Helm チャートにより simple-kmod オブジェクトをデプロイします。この YAML をsimple-kmod-configmap.yamlとして保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドラインで、
SpecialResourceファイルを作成します。oc create -f simple-kmod-configmap.yaml
$ oc create -f simple-kmod-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ノードから simple-kmod カーネルモジュールを削除する場合は、oc delete コマンドを使用して simple-kmod SpecialResource API オブジェクトを削除します。カーネルモジュールは、ドライバーコンテナー Pod が削除されるとアンロードされます。
検証
simple-kmod リソースは、オブジェクトマニフェストで指定された simple-kmod namespace にデプロイされます。しばらくすると、simple-kmod ドライバーコンテナーのビルド Pod の実行が開始されます。ビルドは数分後に完了し、ドライバーコンテナー Pod の実行が開始されます。
oc get podsコマンドを使用して、ビルド Pod のステータスを表示します。oc get pods -n simple-kmod
$ oc get pods -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の
oc get podsコマンドから取得したビルド Pod 名と共にoc logsコマンドを使用して、simple-kmod ドライバーコンテナーイメージビルドのログを表示します。oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow simple-kmod カーネルモジュールがロードされていることを確認するには、上記の
oc get podsコマンドから返されたドライバーコンテナー Pod のいずれかでlsmodコマンドを実行します。oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
$ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- 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
sro_kind_completed_info SRO Prometheus メトリックから、デプロイされているさまざまなオブジェクトのステータスに関する情報が分かるので、SROCR インストールのトラブルシューティングに役立ちます。SRO には、環境の正常性監視に使用できる他のタイプのメトリックも含まれます。