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.13.2.2.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
リポジトリーへのポインターを追加します。これには、新たにインストールされたカーネルと一致させる必要があるため、新規のカーネルパッケージが含まれている必要があります。
13.2.2.2.1. MachineConfig オブジェクトでのカーネルモジュールのプロビジョニング リンクのコピーリンクがクリップボードにコピーされました!
MachineConfig
オブジェクト でカーネルモジュールソフトウェアをパッケージ化することで、そのソフトウェアをインストール時に、または Machine Config Operator を使用してワーカーまたはマスターノードに配信できます。
まず、使用するベース Ignition 設定を作成します。インストール時に、Ignition 設定にはクラスターの core
ユーザーの authorized_keys
ファイルに追加する ssh パブリックキーが含まれます。後で MCO を使用して MachineConfig
を追加する場合、ssh パブリックキーは不要になります。どちらのタイプでも、サンプルの simple-kmod サービスは kmods-via-containers@simple-kmod.service
を必要とする systemd ユニットファイルを作成します。
systemd ユニットは アップストリームのバグ に対する回避策であり、kmods-via-containers@simple-kmod.service
が起動時に開始するようにします。
RHEL 8 システムを登録します。
subscription-manager register
# subscription-manager register
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 システムにサブスクリプションを割り当てます。
subscription-manager attach --auto
# subscription-manager attach --auto
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ソフトウェアのビルドに必要なソフトウェアをインストールします。
yum install podman make git -y
# yum install podman make git -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd ユニットファイルを作成する Ignition 設定ファイルを作成します。
Ignition 設定ファイルをホストするディレクトリーを作成します。
mkdir kmods; cd kmods
$ mkdir kmods; cd kmods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd ユニットファイルを作成する Ignition 設定ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記openshift-install
の実行時に、パブリック SSH キーを使用するbaseconfig.ign
ファイルに追加する必要があります。MCO を使用してMachineConfig
オブジェクトを作成する場合、パブリック SSH キーは必要ありません。
以下の設定を使用するベース MCO YAML スニペットを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記mc-base.yaml
は、worker
ノードにカーネルモジュールをデプロイするように設定されます。マスターノードでデプロイするには、ロールをworker
からmaster
に変更します。どちらの方法でも、デプロイメントの種類ごとに異なるファイル名を使用して手順全体を繰り返すことができます。kmods-via-containers
ソフトウェアを取得します。kmods-via-containers
リポジトリーのクローンを作成します。git clone https://github.com/kmods-via-containers/kmods-via-containers
$ git clone https://github.com/kmods-via-containers/kmods-via-containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvc-simple-kmod
リポジトリーのクローンを作成します。git clone https://github.com/kmods-via-containers/kvc-simple-kmod
$ git clone https://github.com/kmods-via-containers/kvc-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
モジュールソフトウェアを取得します。この例では、
kvc-simple-kmod
が使用されます。 fakeroot ディレクトリーを作成し、先にクローン作成したリポジトリーを使用して Ignition で配信するファイルを使用してこれを設定します。
ディレクトリーを作成します。
FAKEROOT=$(mktemp -d)
$ FAKEROOT=$(mktemp -d)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kmod-via-containers
ディレクトリーに移動します。cd kmods-via-containers
$ cd kmods-via-containers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow KVC フレームワークインスタンスをインストールします。
make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvc-simple-kmod
ディレクトリーに移動します。cd ../kvc-simple-kmod
$ cd ../kvc-simple-kmod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスを作成します。
make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
$ make install DESTDIR=${FAKEROOT}/usr/local CONFDIR=${FAKEROOT}/etc/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
filetranspiler
というツールおよび依存するソフトウェアを取得します。cd .. ; sudo yum install -y python3
$ cd .. ; sudo yum install -y python3 git clone https://github.com/ashcrow/filetranspiler.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最終的なマシン設定 YAML(
mc.yaml
) を生成し、これに配信するファイルと共にベース Ignition 設定、ベースマシン設定、および fakeroot ディレクトリーを含めます。./filetranspiler/filetranspile -i ./baseconfig.ign \ -f ${FAKEROOT} --format=yaml --dereference-symlinks \ | sed 's/^/ /' | (cat mc-base.yaml -) > 99-simple-kmod.yaml
$ ./filetranspiler/filetranspile -i ./baseconfig.ign \ -f ${FAKEROOT} --format=yaml --dereference-symlinks \ | sed 's/^/ /' | (cat mc-base.yaml -) > 99-simple-kmod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターがまだ起動していない場合は、マニフェストファイルを生成し、そのファイルを
openshift
ディレクトリーに追加します。クラスターがすでに実行中の場合は、ファイルを以下のように適用します。oc create -f 99-simple-kmod.yaml
$ oc create -f 99-simple-kmod.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードは
kmods-via-containers@simple-kmod.service
サービスを起動し、カーネルモジュールがロードされます。カーネルモジュールがロードされていることを確認するには、ノードにログインすることができます (
oc debug node/<openshift-node>
を使用してからchroot /host
を使用します)。モジュールを一覧表示するには、lsmod
コマンドを使用します。lsmod | grep simple_
$ 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