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>-
必要に応じて、クラスター管理者として、カーネルモジュールのアップグレードに必要な追加のメンテナンスをノード上で実行します。
追加のアップグレードが必要ない場合は、
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
は、Module
CR のversion
フィールドの新しい値と等しくなければなりません。$ oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=<desired_version>
注記ラベル名の Kubernetes の制限により、
Module
名と namespace の組み合わせの長さが 39 文字を超えることができません。- ノード上のカーネルモジュールを活用するワークロードを復元します。
- ノード上の KMM によって管理されるデバイスプラグインをリロードします。