4.12. カーネルモジュールのアップグレードのカスタマイズ
必要に応じて、ノードの再起動など、ノードでのメンテナンス操作の実行中にカーネルモジュールをアップグレードします。クラスターで実行しているワークロードへの影響を最小限に抑えるには、カーネルのアップグレードプロセスを一度に 1 つずつ実行します。
この手順では、カーネルモジュールを使用するワークロードに関する知識が必要で、クラスター管理者が管理する必要があります。
前提条件
-
アップグレードする前に、カーネルモジュールで使用されるすべてのノードで
kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=$moduleVersionラベルを設定します。 - ノード上のすべてのユーザーアプリケーションワークロードを終了するか、別のノードに移動します。
- 現在読み込み済みのカーネルモジュールをアンロードします。
- カーネルモジュールをアンロードする前にユーザーワークロード (カーネルモジュールにアクセスしているクラスター内で実行されているアプリケーション) がノード上で実行していないこと、および新しいカーネルモジュールバージョンがロードされた後にワークロードがノード上で再び実行していることを確認します。
手順
- ノード上の KMM によって管理されているデバイスプラグインがアンロードされていることを確認します。
Moduleカスタムリソース (CR) の次のフィールドを更新します。-
containerImage(適切なカーネルバージョンに) version更新はアトミックである必要があります。つまり、
containerImageフィールドとversionフィールドの両方を同時に更新する必要があります。
-
- アップグレードしているノードのカーネルモジュールを使用して、すべてのワークロードを終了します。
ノードの
kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>ラベルを削除します。次のコマンドを実行して、ノードからカーネルモジュールをアンロードします。oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>-
$ oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>-Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、クラスター管理者として、カーネルモジュールのアップグレードに必要な追加のメンテナンスをノード上で実行します。
追加のアップグレードが必要ない場合は、
kmm.node.kubernetes.io/version-module.<module-namespace>.<module-name>ラベル値を、Moduleの設定どおりに新しい$moduleVersionに更新して、手順 3 から 6 を省略できます。次のコマンドを実行して、
kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=$moduleVersionラベルをノードに追加します。$moduleVersionは、ModuleCR のversionフィールドの新しい値と等しくなければなりません。oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=<desired_version>
$ oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=<desired_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ラベル名の Kubernetes の制限により、
Module名と namespace の組み合わせの長さが 39 文字を超えることができません。- ノード上のカーネルモジュールを活用するワークロードを復元します。
- ノード上の KMM によって管理されるデバイスプラグインをリロードします。