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 クラスター内のノードあたりの最大ポッド数の構成」を参照してください。
- 仮想マシン (VM) が 8 GB のメモリを提供し、ノードが最大 30 個のポッドをサポートしている場合、AKS は kube 予約用に "20 MB * 最大ポッド数 30 + 50 MB = 650 MB" を予約します。
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 の基本的なスケジューラ機能のベスト プラクティスに関するページを参照してください。
次のステップ
Azure Kubernetes Service