すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ノードプールのkubeletパラメーターのカスタマイズ

最終更新日:Nov 04, 2024

デフォルトの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またはsysctlパターンのリストを指定します。 パターンはコンマ (,) で区切ります。

重要

このパラメーターを指定する前に、リスクを評価し、このパラメーターの設定後にノードが使用可能であることを確認します。

非該当

次のプレフィックスを持つ安全でないsysctlパターンがサポートされています。

  • kernel.shm

  • kernel.msg

  • kernel.sem

  • fs.mqueueを使用します。

  • ネットを使用します。

containerLogMaxFiles

コンテナーログファイルの最大数を指定します。 値は2以上で、コンテナランタイムはcontainerdである必要があります。

10

[2, 10]

containerLogMaxSize

コンテナーログファイルをローテーションする前の最大サイズを指定します。 コンテナーランタイムはcontainerdである必要があります。

100Mi

非該当

eventRecordQPS

1秒あたりに生成できるイベントの最大数を指定します。

5

[1, 50]

eventBurst

イベント作成のバーストの最大サイズを指定します。

10

設定可能な値は 1~100 です。 値は、eventRecordQPSの値以上である必要があります。

featureGates

フィーチャーゲートのグループを指定します。 各フィーチャゲートをkey=value形式で指定します。 詳細については、「機能ゲート」をご参照ください。

image.png

重要

このパラメーターを指定する前に、リスクを評価し、このパラメーターの設定後にノードが使用可能であることを確認します。

非該当

非該当

kubeAPIQPS

kubeletがKubernetes APIサーバーと通信するときに使用するQPSを指定します。

5

[1, 50]

kubeAPIBurst

Kubernetes APIサーバーに送信できるリクエストのバーストの1秒あたりの最大サイズを指定します。

10

設定可能な値は 1~100 です。 値は、kubeAPIQPSの値以上である必要があります。

registryPullQPS

イメージプルの1秒あたりの最大クエリ数 (QPS) を指定します。

5

[1, 50]

registryBurst

イメージプルのバーストの最大サイズを指定します。

10

設定可能な値は 1~100 です。 値は、registryPullQPSの値以上である必要があります。

serializeImagePulls

kubeletが一度に1つのイメージをプルできるようにします。

False

有効な値:

  • False: この値は推奨されます。 パラレルモードを使用して画像を取得し、ポッドの起動速度を高速化できます。

  • True: このモードでは、kubeletは一度に1つの画像をプルします。

cpuManagerPolicy

kubeletが使用するCPU管理ポリシーを指定します。

none

有効な値:

  • none

  • static

evictionHard

ポッドのハード削除しきい値のセットを指定します。

imagefs.available<15%,memory.available<300Mi,nodefs.available<10%,nodefs.inodesFree<5%

非該当

evictionSoft

ポッドのソフト削除しきい値のセットを指定します。

非該当

非該当

evictionSoftGracePeriod

削除しきい値の猶予期間のセットを指定します。

説明

このパラメーターを設定するには、まずevictionSoftパラメーターを設定する必要があります。

非該当

非該当

kubeReserved

Kubernetesシステムコンポーネントのリソースを予約する設定のセットを指定します。

予約されたリソースは、デフォルトでシステムによって決定されます。 詳細については、「リソース予約ポリシー」をご参照ください。

非該当

maxPods

ノードが実行できるポッドの最大数を指定します。

なし。 デフォルト値は、ノード仕様やコンテナネットワーク設計などの物理リソース構成によって異なります。

非該当

systemReserved

システムのリソースを予約する設定のセットを指定します。

予約されたリソースは、デフォルトでシステムによって決定されます。 詳細については、「リソース予約ポリシー」をご参照ください。

非該当

readOnlyPort

kubeletが認証または承認なしで提供する読み取り専用ポートを指定します。

  • Kubernetesバージョンが1.26以降のクラスターのデフォルト値は0です。

  • Kubernetesバージョンが1.26より前のクラスターでは、デフォルト値は10255です。

0

kubelet読み取り専用ポート10255を有効にするリスクの詳細については、「 [製品の変更] 1.26より前のバージョンのKubernetesを実行するACKクラスターでkubeletの読み取り専用ポートの代わりに認証ポートを開く」をご参照ください。

cpuCFSQuota

CPU制限を指定するコンテナーのCPU CFSクォータの適用を有効にします。

true

有効な値:

  • true

  • false

cpuCFSQuotaPeriod

CPU CFSクォータ期間を指定します。

CustomCPUCFSQuotaPeriod機能ゲートが有効になっていることを確認します。

100ms

値の範囲は1ミリ秒から1秒です。

podPidsLimit

各ポッドで使用できるPIDの最大数を指定します。

16384

非該当

memoryManagerPolicy

メモリマネージャが使用するポリシーの名前を指定します。

なし

有効な値:

  • なし

  • 静的

    このポリシーを使用するには、次の操作を完了する必要があります。

    • MemoryManager機能ゲートを有効にします。

    • メモリ予約 (systemReserved、kubeReserved、evictionHard、reservedMemory) を手動で管理し、構成が有効であることを確認します: kube-reserved + system-reserved + eviction-hard = sum(reserved-memory) 。 そうしないと、ノードは利用できなくなります。 以下の図は一例です。 image.png詳細は、「予約済みメモリフラグ」をご参照ください。

topologyManagerPolicy

トポロジマネージャによって使用されるポリシーの名前を指定します。 NUMAアーキテクチャの採用により、同じNUMAノードにデータを割り当てて、ノード間アクセスを減らし、システムパフォーマンスを向上させることができます。 トポロジマネージャは、トポロジに基づいてリソース割り当て決定を行うことができる。 詳細については、「ノードの制御トポロジ管理ポリシー」をご参照ください。

none

  • none (デフォルト): kubeletはトポロジ管理ポリシーを適用しません。

  • restricted: 同じNUMAノード上のポッドのリソース要求を実行できない場合、kubeletはクロスポッドリソース割り当てを許可しません。

  • best-effort: kubeletは、同じNUMAノード上のポッドのリソース要求を実行できない場合に、クロスポッドリソース割り当てを許可します。

  • single-numa-node: kubeletでは、同じNUMAノード上のポッドに対してのみCPUとデバイスのリソースを割り当てることができます。

imageGCHighThresholdPercent

イメージガベージコレクションが常に実行されるディスク使用率を指定します。

値はimageGCLowThresholdPercentの値より大きくなければなりません。

85

[60, 95]

imageGCLowThresholdPercent

イメージガベージコレクションが実行されないディスク使用率を指定します。

値はimageGCHighThresholdPercentの値より小さくなければなりません。

80

[30, 90]

reservedMemory

NUMAノードのメモリ予約のリストを指定します。

非該当

非該当

ACKコンソールでkubeletパラメーターをカスタマイズする

カスタマイズされたkubeletパラメーターを適用するには、kubeletプロセスが自動的に再起動します。 これにより、ビジネスに影響を与える可能性があります。 そのため、ピーク時間外に操作を実行することを推奨します。

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. [ノードプール] ページで、管理するノードプールの [操作] 列で [詳細] > [kubeletの設定] を選択します。

  4. ページの使用状況メモを読み、[カスタムパラメーター] をクリックしてカスタマイズするパラメーターを選択し、[バッチごとに修復するノードの最大数] を指定してから、[送信] をクリックします。 指示に従って操作を完了します。

    [バッチごとに修復するノードの最大数] を指定すると、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ファイル内のコンテンツの有効性と互換性について責任を負います。 無効な設定または非推奨の設定を使用すると、ノードが使用できなくなることがあります。

関連トピック