答え1
この場合、すべてが意図したとおりに動作しています。 に関する情報を見逃したようですEviction threshold
。
Allocatable
Capacity
はマイナスReserved
との値ですEviction Threshold
。
GKE
ドキュメント内ノード割り当て可能リソースリソースの割り当てに関する情報を見つけることができます。
ノードのリソースの一部は、
GKE
および の一部としてそのノードを機能させるために必要な Kubernetes ノード コンポーネントを実行するために必要ですcluster
。そのため、ノードの合計リソース (マシン タイプのドキュメントで指定) とallocatable
内のノードのリソースとの間に不一致が生じることがありますGKE
。マシン タイプが大きいほど、より多くのリソース (ひいてはポッドの数も) が実行される傾向があるため、 に予約されているcontainers
リソースの量は、マシンが大きいほど増加します。は、一般的な よりも必要です。ノードには、Windows OS の実行と、コンテナーでは実行できない Windows Server コンポーネントに対応するために、追加のリソースが必要です。GKE
Kubernetes components
Windows Server nodes
more resources
Linux node
クラスターで使用可能なノード割り当て可能リソースを検査するには、次のコマンドを実行します。
$ kubectl describe node ${NodeName} | grep Allocatable -B 7 -A 6
返される出力には、一時ストレージ、メモリ、CPU の測定値を含む Capacity フィールドと Allocatable フィールドが含まれます。
少し下にスクロールすると割り当て可能なメモリとCPUリソース割り当て可能なリソースは次のように計算されます。
Allocatable = Capacity - Reserved - Eviction Threshold
メモリ リソースについては、GKE は次のものを予約します。
- 1 GB未満のメモリを搭載したマシンの場合は255 MiBのメモリ
- 最初の4GBのメモリの25%
- 次の 4GB のメモリの 20% (最大 8GB)
- 次の 8GB のメモリの 10% (最大 16GB)
- 次の 112GB のメモリの 6% (最大 128GB)
- 128GBを超えるメモリの2%