説明
--protect-kernel-defaults=false の場合、kubelet は期待値と異なる一部のカーネル設定を調整しようとします。true の場合は変更せず、不一致時にエラーを返します。すべてのカーネル設定やワークロードによる sysctl 変更を保護する機能ではありません。
カーネルパラメーターはノード全体に影響する場合があるため、承認された基準で管理する必要があります。自動調整を防ぐ場合は、必要な値を事前に設定してから保護を有効にしてください。
想定される影響
- 自動調整が運用者の管理するノード設定と競合する場合があります。
- 準備せずに保護を有効にすると、設定の不一致で kubelet が起動できない場合があります。
対処方法
- ノードの kubelet バージョンが要求するカーネル値を確認し、承認された設定管理手順で適用してください。
- 自動調整を防ぐ必要がある場合は、
protectKernelDefaults: trueまたは従来の--protect-kernel-defaults=trueを設定してください。 - 変更後に kubelet の起動とノードの状態を確認し、ワークロードの sysctl 権限は別途制限してください。
例
コマンド引数を比較する抜粋です。foo/bar は仮のイメージであり、この Pod をデプロイしてもノードの kubelet は再設定されません。実際のノードのバージョンに対応する設定方法で適用してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: foo/bar
command: ["kubelet"]
args: ["--protect-kernel-defaults=false"]
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: foo/bar
command: ["kubelet"]
args: ["--protect-kernel-defaults=true"]
補足:
- 変更前: kubelet が期待値と異なる設定を調整しようとします。これだけでワークロードに任意のカーネル変更を許可するわけではありません。
- 変更後: 不一致時にエラーを返します。必要なカーネル値を事前に設定する必要があります。