1.3.2. カーネルモジュールの OpenShift Container Platform へのプロビジョニング
OpenShift Container Platform クラスターの初回起動時にカーネルモジュールを有効にする必要があるかどうかに応じて、以下のいずれかの方法でデプロイするようにカーネルモジュールを設定できます。
-
クラスターインストール時のカーネルモジュールのプロビジョニング (day-1): コンテンツを
MachineConfigとして作成し、これをマニフェストファイルのセットと共に組み込み、これをopenshift-installに提供できます。 - Machine Config Operator によるカーネルモジュールのプロビジョニング (day-2): カーネルモジュールを追加する際にクラスターが稼働するまで待機できる場合は、Machine Config Operator (MCO) を使用してカーネルモジュールソフトウェアをデプロイできます。
いずれの場合も、各ノードは、新しいカーネルが検出された際に、カーネルパッケージおよび関連するソフトウェアパッケージを取得できるようにする必要があります。該当するコンテンツを取得できるように各ノードをセットアップする方法はいくつかあります。
- 各ノードに RHEL エンタイトルメントを提供します。
-
/etc/pki/entitlementディレクトリーから、既存 RHEL ホストの RHEL エンタイトルメントを取得し、それらを Ignition 設定の作成時に提供する他のファイルと同じ場所にコピーします。 -
Dockerfile 内で、カーネルおよびその他のパッケージを含む
yumリポジトリーへのポインターを追加します。これには、新たにインストールされたカーネルと一致させる必要があるため、新規のカーネルパッケージが含まれている必要があります。
1.3.2.1. MachineConfig オブジェクトを介したカーネルモジュールのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
MachineConfig オブジェクトでカーネルモジュールソフトウェアをパッケージ化することで、インストール時に、または Machine Config Operator を使用して、そのソフトウェアをワーカーノードまたはコントロールプレーンノードに配信できます。
手順
RHEL 8 システムを登録します。
# subscription-manager registerRHEL 8 システムにサブスクリプションを割り当てます。
# subscription-manager attach --autoソフトウェアのビルドに必要なソフトウェアをインストールします。
# yum install podman make git -yカーネルモジュールおよびツールをホストするディレクトリーを作成します。
$ mkdir kmods; cd kmodskmods-via-containersソフトウェアを取得します。kmods-via-containersリポジトリーのクローンを作成します。$ git clone https://github.com/kmods-via-containers/kmods-via-containerskvc-simple-kmodリポジトリーのクローンを作成します。$ git clone https://github.com/kmods-via-containers/kvc-simple-kmod
-
モジュールソフトウェアを取得します。この例では、
kvc-simple-kmodが使用されます。 先ほどクローン作成したリポジトリーを使用して、fakeroot ディレクトリーを作成し、Ignition 経由で配信するファイルをそのディレクトリーに追加します。
ディレクトリーを作成します。
$ FAKEROOT=$(mktemp -d)kmod-via-containersディレクトリーに移動します。$ cd kmods-via-containersKVC フレームワークインスタンスをインストールします。
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/kvc-simple-kmodディレクトリーに移動します。$ cd ../kvc-simple-kmodインスタンスを作成します。
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
fakeroot ディレクトリーのクローンを作成し、以下のコマンドを実行してシンボリックリンクをターゲットのコピーに置き換えます。
$ cd .. && rm -rf kmod-tree && cp -Lpr ${FAKEROOT} kmod-treeカーネルモジュールツリーを埋め込む Butane 設定ファイル (
99-simple-kmod.bu) を作成し、systemd サービスを有効にします。注記Butane の詳細は、「Butane を使用したマシン設定の作成」を参照してください。
variant: openshift version: 4.20.0 metadata: name: 99-simple-kmod labels: machineconfiguration.openshift.io/role: worker1 storage: trees: - local: kmod-tree systemd: units: - name: kmods-via-containers@simple-kmod.service enabled: true- 1
- コントロールプレーンノードでデプロイするには、
workerをmasterに変更します。コントロールプレーンおよびワーカーノードの両方にデプロイするには、それぞれのノードのタイプに対してこれらの残りの手順を 1 回ずつ実行します。
Butane を使用して、配信されるファイルおよび設定を含むマシン設定 YAML ファイルの
99-simple-kmod.yamlを生成します。$ butane 99-simple-kmod.bu --files-dir . -o 99-simple-kmod.yamlクラスターがまだ起動していない場合は、マニフェストファイルを生成し、そのファイルを
openshiftディレクトリーに追加します。クラスターがすでに実行中の場合は、ファイルを以下のように適用します。$ oc create -f 99-simple-kmod.yamlノードは
kmods-via-containers@simple-kmod.serviceサービスを起動し、カーネルモジュールがロードされます。カーネルモジュールがロードされていることを確認するには、ノードにログインすることができます (
oc debug node/<openshift-node>を使用してからchroot /hostを使用します)。モジュールをリスト表示するには、lsmodコマンドを使用します。$ lsmod | grep simple_出力例
simple_procfs_kmod 16384 0 simple_kmod 16384 0