4.3. Kernel Module Management Operator の設定
ほとんどの場合、Kernel Module Management (KMM) Operator のデフォルト設定を変更する必要はありません。ただし、次の手順を使用して、環境に合わせて Operator 設定を変更できます。
Operator 設定は、Operator namespace の kmm-operator-manager-config ConfigMap に設定されています。
手順
設定を変更するには、次のコマンドを入力して
ConfigMapデータを編集します。oc edit configmap -n "$namespace" kmm-operator-manager-config
$ oc edit configmap -n "$namespace" kmm-operator-manager-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand 表4.1 Operator 設定パラメーター パラメーター 説明 healthProbeBindAddressOperator が kubelet ヘルスプローブを監視するアドレスを定義します。推奨値は
:8081です。job.gcDelay成功したビルド Pod を削除するまでの保持期間を定義します。この設定に推奨値はありません。この設定の有効な値は、ParseDuration を参照してください。
leaderElection.enabledleader election を使用して KMM Operator のレプリカが常に 1 つだけ実行されるようにするか決定します。詳細は、リース を参照してください。推奨値は
trueです。leaderElection.resourceIDleader election がリーダーロックを保持するために使用するリソースの名前を決定します。推奨値は
kmm.sigs.x-k8s.ioです。webhook.disableHTTP2trueの場合、cve-2023-44487 の緩和策として、webhook サーバーの HTTP/2 が無効になります。推奨値はtrueです。webhook.portOperator が webhook リクエストを監視するポートを定義します。推奨値は
9443です。metrics.enableAuthnAuthzメトリクスの認証に
TokenReviewsを使用し、認可に kube-apiserver でSubjectAccessReviewsを使用するか決定します。認証と認可のために、コントローラーには次のルールを持つ
ClusterRoleが必要です。-
apiGroups: authentication.k8s.io, resources: tokenreviews, verbs: create -
apiGroups: authorization.k8s.io, resources: subjectaccessreviews, verbs: create
たとえば、Prometheus を使用してメトリクスをスクレイピングするには、クライアントに次のルールを持つ
ClusterRoleが必要です。-
nonResourceURLs: "/metrics", verbs: get
推奨値は
trueです。metrics.disableHTTP2trueの場合、CVE-2023-44487 の緩和策として、メトリクススサーバーの HTTP/2 が無効になります。推奨値はtrueです。metrics.bindAddressメトリクスサーバーのバインドアドレスを決定します。指定しない場合、デフォルトは
:8080です。メトリクスサーバーを無効にするには、0に設定します。推奨値は0.0.0.0:8443です。metrics.secureServingメトリクスが HTTP ではなく HTTPS 経由で提供されるかどうかを決定します。推奨値は
trueです。worker.runAsUserワーカーコンテナーのセキュリティーコンテキストの
runAsUserフィールド値を決定します。詳細は、SecurityContext を参照してください。推奨値は9443です。worker.seLinuxTypeワーカーコンテナーのセキュリティーコンテキストの
seLinuxOptions.typeフィールド値を決定します。詳細は、SecurityContext を参照してください。推奨値はspc_tです。worker.setFirmwareClassPathカーネルのファームウェア検索パスをノード上の
/sys/module/firmware_class/parameters/pathファイルに設定します。ワーカーアプリケーションを通じて値を設定する必要がある場合、推奨値は/var/lib/firmwareです。それ以外の場合は設定しません。-
設定を変更したら、次のコマンドでコントローラーを再起動します。
oc delete pod -n "<namespace>" -l app.kubernetes.io/component=kmm
$ oc delete pod -n "<namespace>" -l app.kubernetes.io/component=kmmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記<namespace> の値は、元のインストール方法によって異なります。
4.3.1. カーネルモジュールのアンロード リンクのコピーリンクがクリップボードにコピーされました!
新しいバージョンに移行する場合、またはカーネルモジュールがノードに望ましくない作用をもたらす場合は、カーネルモジュールをアンロードする必要があります。
手順
KMM でロードされたモジュールをノードからアンロードするには、対応する
Moduleリソースを削除します。次に、KMM が必要に応じてワーカー Pod を作成し、modprobe -rを実行してノードからカーネルモジュールをアンロードします。警告ワーカー Pod をアンロードする場合、KMM はカーネルモジュールをロードするときに使用するすべてのリソースを必要とします。これには、
Moduleで参照されるServiceAccountと、特権付き KMM ワーカー Pod の実行を許可するために定義された RBAC が含まれます。また、.spec.imageRepoSecretで参照されるプルシークレットも含まれます。KMM がノードからカーネルモジュールをアンロードできない状況を回避するには、
ModuleリソースがTerminatingなどの任意の状態でクラスター内に存在している間は、それらのリソースが削除されないようにしてください。KMM には、少なくとも 1 つのModuleリソースを含む namespaces の削除を拒否する検証アドミッション Webhook が含まれています。
4.3.2. カーネルファームウェア検索パスの設定 リンクのコピーリンクがクリップボードにコピーされました!
ファームウェアの検索パス で説明されているとおり、Linux カーネルは firmware_class.path パラメーターをファームウェアの検索パスとして受け入れます。
KMM ワーカー Pod は、kmods のロードを試みる前に sysfs に書き込むことで、ノードにこの値を設定できます。
手順
-
ファームウェア検索パスを定義するには、Operator 設定で
worker.setFirmwareClassPathを/var/lib/firmwareに設定します。