答案1
在这种情况下,一切都按预期进行。我猜你错过了有关的信息Eviction threshold
。
Allocatable
Capacity
是减Reserved
和的值Eviction Threshold
。
在GKE
文档中节点可分配资源您可以找到有关资源分配的信息。
运行 和 Kubernetes 节点组件需要节点的部分
GKE
资源,这些组件是使该节点作为 的一部分运行所必需的cluster
。因此,您可能会注意到节点的总资源(如机器类型文档中所述)与allocatable
中的节点资源之间存在差异GKE
。由于较大的机器类型往往会运行更多(进而运行更多 Pod),因此为 预留的containers
资源量会为较大的机器向上扩展。也比典型的需要。节点需要额外的资源来运行 Windows 操作系统和无法在容器中运行的 Windows Server 组件。GKE
Kubernetes components
Windows Server nodes
more resources
Linux node
要检查集群中可用的节点可分配资源,请运行以下命令:
$ kubectl describe node ${NodeName} | grep Allocatable -B 7 -A 6
返回的输出包含容量和可分配字段,以及对临时存储、内存和 CPU 的测量值。
如果你向下滚动到可分配的内存和 CPU 资源您将看到可分配资源的计算方式如下:
Allocatable = Capacity - Reserved - Eviction Threshold
对于内存资源,GKE 保留了以下内容:
- 对于内存小于 1 GB 的机器,需要 255 MiB 内存
- 前 4GB 内存的 25%
- 接下来的 4GB 内存的 20%(最多 8GB)
- 接下来的 8GB 内存的 10%(最多 16GB)
- 接下来的 112GB 内存的 6%(最多 128GB)
- 128GB 以上内存的 2%