デフォルトのkubelet設定がビジネス要件を満たさない場合、ノードプール内のすべてのノードのkubeletパラメーターをカスタマイズできます。 たとえば、リソース予約を変更してリソース使用量を調整したり、ポッドの削除しきい値をカスタマイズしてリソース不足の問題を解決したり、トポロジ管理ポリシーを調整してシステムパフォーマンスを向上させたりする場合は、kubeletパラメーターをカスタマイズできます。
制限事項
Container Service For Kubernetes (ACK) クラスターの場合、Kubernetes 1.20以降を実行するクラスターに対してのみkubeletパラメーターをカスタマイズできます。 ACKクラスターの更新方法の詳細については、「ACKクラスターの手動アップグレード」をご参照ください。
ACK Lingjunクラスターの場合、kubeletパラメーターは、Kubernetes 1.22を実行するクラスターに対してのみカスタマイズできます。
使用上の注意
ノードのkubeletパラメーターをバッチでカスタマイズする必要があります。 カスタマイズされたkubeletパラメーターは、ノードプール内の既存のノードですぐに有効になります。 ノードプールに新たに追加されたノードも、カスタマイズされたkubeletパラメータを使用します。 カスタマイズされたkubeletパラメーターを適用するには、kubeletプロセスが自動的に再起動します。 これは、ノードプールで実行されているノードとワークロードに影響します。 そのため、ピーク時間外に操作を実行することを推奨します。
evictionHard、kubeReserved、またはsystemReservedパラメーターを設定しない場合、システムはデフォルトのリソース予約ポリシーに基づいてリソースを予約します。 詳細については、「リソース予約ポリシー」をご参照ください。
予約されたリソースの量を変更することは、ノードの割り当て可能なリソースの量を低減し得る。 ノードのリソース使用量が多い場合、ノード上のワークロードが追い出される可能性があります。
ACKコンソールで使用できないkubeletパラメーターをカスタマイズするためにCLIを使用しないことをお勧めします。 これは、深刻な安定性リスクをもたらし得る。 ユーザーは、userdataファイル内のコンテンツの有効性と互換性について責任を負います。 無効な設定または非推奨の設定を使用すると、ノードが使用できなくなることがあります。
ACKコンソールでカスタマイズ可能なkubeletパラメーター
パラメーター | 説明 | デフォルト | 推奨値 |
allowedUnsafeSysctls | アスタリスク ( 重要 このパラメーターを指定する前に、リスクを評価し、このパラメーターの設定後にノードが使用可能であることを確認します。 | 非該当 | 次のプレフィックスを持つ安全でないsysctlパターンがサポートされています。
|
containerLogMaxFiles | コンテナーログファイルの最大数を指定します。 値は2以上で、コンテナランタイムはcontainerdである必要があります。 | 10 | [2, 10] |
containerLogMaxSize | コンテナーログファイルをローテーションする前の最大サイズを指定します。 コンテナーランタイムはcontainerdである必要があります。 | 100Mi | 非該当 |
eventRecordQPS | 1秒あたりに生成できるイベントの最大数を指定します。 | 5 | [1, 50] |
eventBurst | イベント作成のバーストの最大サイズを指定します。 | 10 | 設定可能な値は 1~100 です。 値は、 |
featureGates | フィーチャーゲートのグループを指定します。 各フィーチャゲートを 重要 このパラメーターを指定する前に、リスクを評価し、このパラメーターの設定後にノードが使用可能であることを確認します。 | 非該当 | 非該当 |
kubeAPIQPS | kubeletがKubernetes APIサーバーと通信するときに使用するQPSを指定します。 | 5 | [1, 50] |
kubeAPIBurst | Kubernetes APIサーバーに送信できるリクエストのバーストの1秒あたりの最大サイズを指定します。 | 10 | 設定可能な値は 1~100 です。 値は、 |
registryPullQPS | イメージプルの1秒あたりの最大クエリ数 (QPS) を指定します。 | 5 | [1, 50] |
registryBurst | イメージプルのバーストの最大サイズを指定します。 | 10 | 設定可能な値は 1~100 です。 値は、 |
serializeImagePulls | kubeletが一度に1つのイメージをプルできるようにします。 | False | 有効な値:
|
cpuManagerPolicy | kubeletが使用するCPU管理ポリシーを指定します。 | none | 有効な値:
|
evictionHard | ポッドのハード削除しきい値のセットを指定します。 | imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5% | 非該当 |
evictionSoft | ポッドのソフト削除しきい値のセットを指定します。 | 非該当 | 非該当 |
evictionSoftGracePeriod | 削除しきい値の猶予期間のセットを指定します。 説明 このパラメーターを設定するには、まずevictionSoftパラメーターを設定する必要があります。 | 非該当 | 非該当 |
kubeReserved | Kubernetesシステムコンポーネントのリソースを予約する設定のセットを指定します。 | 予約されたリソースは、デフォルトでシステムによって決定されます。 詳細については、「リソース予約ポリシー」をご参照ください。 | 非該当 |
maxPods | ノードが実行できるポッドの最大数を指定します。 | なし。 デフォルト値は、ノード仕様やコンテナネットワーク設計などの物理リソース構成によって異なります。 | 非該当 |
systemReserved | システムのリソースを予約する設定のセットを指定します。 | 予約されたリソースは、デフォルトでシステムによって決定されます。 詳細については、「リソース予約ポリシー」をご参照ください。 | 非該当 |
readOnlyPort | kubeletが認証または承認なしで提供する読み取り専用ポートを指定します。 |
| 0 kubelet読み取り専用ポート10255を有効にするリスクの詳細については、「 [製品の変更] 1.26より前のバージョンのKubernetesを実行するACKクラスターでkubeletの読み取り専用ポートの代わりに認証ポートを開く」をご参照ください。 |
cpuCFSQuota | CPU制限を指定するコンテナーのCPU CFSクォータの適用を有効にします。 | true | 有効な値:
|
cpuCFSQuotaPeriod | CPU CFSクォータ期間を指定します。 CustomCPUCFSQuotaPeriod機能ゲートが有効になっていることを確認します。 | 100ms | 値の範囲は1ミリ秒から1秒です。 |
podPidsLimit | 各ポッドで使用できるPIDの最大数を指定します。 | 16384 | 非該当 |
memoryManagerPolicy | メモリマネージャが使用するポリシーの名前を指定します。 | なし | 有効な値:
|
topologyManagerPolicy | トポロジマネージャによって使用されるポリシーの名前を指定します。 NUMAアーキテクチャの採用により、同じNUMAノードにデータを割り当てて、ノード間アクセスを減らし、システムパフォーマンスを向上させることができます。 トポロジマネージャは、トポロジに基づいてリソース割り当て決定を行うことができる。 詳細については、「ノードの制御トポロジ管理ポリシー」をご参照ください。 | none |
|
imageGCHighThresholdPercent | イメージガベージコレクションが常に実行されるディスク使用率を指定します。 値はimageGCLowThresholdPercentの値より大きくなければなりません。 | 85 | [60, 95] |
imageGCLowThresholdPercent | イメージガベージコレクションが実行されないディスク使用率を指定します。 値はimageGCHighThresholdPercentの値より小さくなければなりません。 | 80 | [30, 90] |
reservedMemory | NUMAノードのメモリ予約のリストを指定します。 | 非該当 | 非該当 |
ACKコンソールでkubeletパラメーターをカスタマイズする
カスタマイズされたkubeletパラメーターを適用するには、kubeletプロセスが自動的に再起動します。 これにより、ビジネスに影響を与える可能性があります。 そのため、ピーク時間外に操作を実行することを推奨します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノードプール] ページで、管理するノードプールの [操作] 列で [詳細] > [kubeletの設定] を選択します。
ページの使用状況メモを読み、[カスタムパラメーター] をクリックしてカスタマイズするパラメーターを選択し、[バッチごとに修復するノードの最大数] を指定してから、[送信] をクリックします。 指示に従って操作を完了します。
[バッチごとに修復するノードの最大数] を指定すると、kubeletは指定されたバッチ内のノードの設定を更新します。 バッチ数を10に設定することを推奨します。 更新の進行状況は、[イベントローテーション] セクションで確認できます。 更新を一時停止、再開、またはキャンセルすることもできます。
更新を一時停止してから、更新されたノードを確認できます。 更新を一時停止した後も、現在のバッチ内のノードのkubelet設定は更新されます。 更新を再開するまで、ノードの残りのバッチは更新されません
説明できるだけ早い機会に更新を完了することをお勧めします。 更新が7日間一時停止されたままの場合、システムは自動的に更新をキャンセルし、関連するイベントとログを削除します。
よくある質問
ACKはカスタマイズされたkubeletパラメーターを非推奨にしますか?
一部のパラメーターまたは機能ゲートは、廃止予定としてマークされるか、新しいKubernetesバージョンから直接削除されます。 Container Service for Kubernetesで管理されているカスタムkubeletパラメーターが新しいバージョンのKubernetesに適用されなくなった場合、ACKはノード設定の更新中にこれらのパラメーターを自動的に非推奨にします。
構成ファイルを使用してkubeletを管理するにはどうすればよいですか?
Container Service for Kubernetesは、Kubernetesコミュニティのベストプラクティスに基づいて、kubelet設定の管理方法を調整します。 1.20以降のバージョンのKubernetesでは、廃止されたkubelet起動コマンド (Command-Line Flags) が設定ファイルに置き換えられます。 詳細については、Kubelet設定 (v1beta1) を参照してください。
元の設定と設定ファイルは、新しいノード (新しく追加されたノードと新しく作成されたノード) で予約されます。 既存のノードは影響を受けません。 構成ファイルを使用してこれらのノードを管理する方法の詳細については、ACKコンソールのカスタマイズ可能なkubeletパラメーターを参照して、ノードプール内のすべてのノードの構成を管理するために構成の更新をトリガーします。
ACKコンソールで使用できないkubeletパラメーターをカスタマイズするにはどうすればよいですか?
ACKコンソールで使用できないkubeletパラメーターをカスタマイズするためにCLIを使用しないことをお勧めします。 CLIを使用する場合は、リスクを評価し、次のコマンドを実行してノードプールのuserdataを変更します。 ユーザーデータが変更された後、カスタマイズされた構成は、ノードプールに新たに追加されたノードに自動的に適用されます。
echo 'KUBELET_CUSTOMIZED_ARGS=""' > /etc/kubernetes/kubelet-customized-args.conf
systemctl daemon-reload
systemctl restart kubelet
また、設定の競合が発生した場合にCLIでuserdataを変更して、カスタマイズ可能なACKコンソールのkubeletパラメーターを変更しないでください。 これにより、ノードプールのメンテナンス中に予期しない結果が生じる可能性があります。
CLIを使用してkubeletパラメーターをカスタマイズすると、安定性に重大なリスクがあります。 ユーザーは、userdataファイル内のコンテンツの有効性と互換性について責任を負います。 無効な設定または非推奨の設定を使用すると、ノードが使用できなくなることがあります。
関連トピック
マネージドノードプールでサポートされているパラメーターの詳細については、「マネージドノードプールの概要」および「ノードプールの作成」をご参照ください。
ノード、ポッド、およびkubelet例外のトラブルシューティング方法の詳細については、「ノード例外のトラブルシューティング」、「ポッドのトラブルシューティング」、および「ノードとノードプールに関するFAQ」をご参照ください。