Azure Kubernetes Service (AKS) のノード リソース予約

この記事では、Azure Kubernetes Service (AKS) のノード リソース予約について説明します。

リソース予約

AKS では、ノード リソースを使用して、クラスターの一部としてノードを機能させることができます。 このような使い方では、お使いのノードの合計リソースと AKS での割り当て可能リソースが一致しなくなることがあります。

ノードのパフォーマンスと機能を維持するために、AKS では各ノード上で 2 つのタイプのリソース (CPUメモリ) を予約します。 あるノードでリソース数が増えると、ユーザーがデプロイするポッドの管理の必要性が高くなるため、リソース予約も増大します。 ノード上のリソース予約は変更できないことに注意してください。

CPU 予約

予約された CPU は、ノードの種類とクラスター構成に依存します。追加の機能が実行されている場合は、割り当て可能な CPU が少なくなることがあります。 次の表は、CPU 予約 (ミリコア単位) を示しています。

ホスト上の CPU コア数 1 コア 2 コア 4 コア 8 コア 16 コア 32 コア 64 コア
Kube 予約された CPU (ミリコア単位) 60 100 140 180 260 420 740

メモリ予約

AKS では、予約済みメモリは 2 つの値の合計で構成されます。

AKS 1.29 以降

  • kubelet デーモンには、既定で memory.available< 100Mi 削除規則があります。 この規則により、ノードでは常に少なくとも 100Mi が割り当て可能な状態であることが保証されます。 ホストがその使用可能メモリのしきい値を下回ると、kubelet が実行中のいずれかのポッドの終了をトリガーして、ホスト マシン上のメモリを解放します。

  • 次のいずれか小さい方の値に従って設定されるメモリ予約の比率: "20 MB * ノードでサポートされている最大ポッド数 + 50 MB" または "システム全体のメモリ リソースの 25%"。

    例:

    • 仮想マシン (VM) が 8 GB のメモリを提供し、ノードが最大 30 個のポッドをサポートしている場合、AKS は kube 予約用に "20 MB * 最大ポッド数 30 + 50 MB = 650 MB" を予約します。 Allocatable space = 8 GB - 0.65 GB (kube-reserved) - 0.1 GB (eviction threshold) = 7.25 GB or 90.625% allocatable.
    • VM が 4 GB のメモリを提供し、ノードが最大 70 個のポッドをサポートしている場合、AKS は kube 予約用に 25% * 4 GB = 1000 MB を予約します。これは "20 MB * 最大ポッド数 70 + 50 MB = 1450 MB" 未満であるためです。

    詳細については、「AKS クラスター内のノードあたりの最大ポッド数の構成」を参照してください。

1.29 より前の AKS バージョン

  • kubelet デーモンには、既定で memory.available< 750Mi 削除規則があります。 この規則により、ノードでは常に少なくとも 750Mi が割り当て可能な状態であることが保証されます。 ホストがその使用可能メモリのしきい値を下回ると、kubelet が実行中のいずれかのポッドの終了をトリガーして、ホスト マシン上のメモリを解放します。
  • kubelet デーモンが適切に機能するための予約されているメモリの回帰率 (kube-reserved)。
    • 最初の 4 GB のメモリの 25%
    • 次の 4 GB のメモリの 20% (最大 8 GB)
    • 次の 8 GB のメモリの 10% (最大 16 GB)
    • 次の 112 GB のメモリの 6% (最大 128 GB)
    • 128 GB を超えるメモリの 2%

Note

AKS は、Windows ノードのシステム プロセス用に、計算メモリに含まれない追加のメモリを 2 GB 予約します。

メモリと CPU の割り当て規則は、次のことを行うように設計されています。

  • エージェント ノードを正常な状態に保ちます (クラスターの正常性に不可欠ないくつかのホスティング システム ポッドを含む)。
  • ノードが Kubernetes クラスターの一部でない場合、それが報告する割り当て可能なメモリと CPU は、より少なくなります。

たとえば、ノードで 7 GB が提供される場合、750Mi のハード削除しきい値を含めて、メモリの 34% が割り当て不可として報告されます。

0.75 + (0.25*4) + (0.20*3) = 0.75 GB + 1 GB + 0.6 GB = 2.35 GB / 7 GB = 33.57% reserved

Kubernetes 自体の予約に加えて、基になるノード OS も OS 機能を維持するための CPU とメモリ リソースの量を予約します。

関連付けられているベスト プラクティスについては、AKS の基本的なスケジューラ機能のベスト プラクティスに関するページを参照してください。

次のステップ