当监控工具仍显示有内存时,GKE 会终止 pod

当监控工具仍显示有内存时,GKE 会终止 pod

我正在使用其默认监控图表测试 GKE。
集群摘要显示每个节点 (n2-custom-4-8192) 有 6.36 GB 的内存可分配。
在节点详细信息页面中,我可以看到当 pod 被杀死时,“已使用”的峰值为 4.19。

我遗漏了什么?或者这是图表的问题? 可分配 6.36 GB 内存

使用 4.19 GB 时 Pod 被终止

答案1

在这种情况下,一切都按预期进行。我猜你错过了有关的信息Eviction threshold

AllocatableCapacity是减Reserved和的值Eviction Threshold

GKE文档中节点可分配资源您可以找到有关资源分配的信息。

运行 和 Kubernetes 节点组件需要节点的部分GKE资源,这些组件是使该节点作为 的一部分运行所必需的cluster。因此,您可能会注意到节点的总资源(如机器类型文档中所述)与allocatable中的节点资源之间存在差异GKE。由于较大的机器类型往往会运行更多(进而运行更多 Pod),因此为 预留的containers资源量会为较大的机器向上扩展。也比典型的需要。节点需要额外的资源来运行 Windows 操作系统和无法在容器中运行的 Windows Server 组件。GKEKubernetes componentsWindows Server nodesmore resourcesLinux 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%

相关内容