在“可观察性”下查看我的 1.23 GKE 集群,我发现内存使用率超过 200%。细分显示大部分内存来自v2k-system
命名空间,据我所知,这是 GKE 的内部结构。为什么它使用的内存比实际请求的内存多 2 倍?我自己的 pod 尝试获取内存但失败了 - 我怀疑这是因为 v2k-system pod 占用了所有内存
答案1
是的,您说得对,它超过 100% 并且是 GKE 内部的。
集群中所有容器的内存使用量除以这些容器的总内存请求量。如果总使用量超过总请求量,则该值可能会超过 100%。
内存利用率: 在选定时间范围内可归因于资源的容器的内存利用率。
使用的指标是kubernetes.io/container/memory/request_utilization。此 Metrics API 提供了一组基本指标,用于支持自动扩展和类似用例。此 API 提供有关节点和 Pod 资源使用情况的信息,包括 CPU 和内存指标。如果您部署指标 API进入您的集群,Kubernetes API 的客户端就可以查询此信息。
有以下两种类型的内存可用:
1)可驱逐内存如果使用率过高,将从资源中删除内存。
2)不可驱逐的内存使用量超出限制,容器可能会被终止。有关资源限制的更多信息,请参阅并使用 请求和限制它或许有助于解决您的问题。
容器保证拥有其请求的内存量,但不允许使用超出其限制的内存。为容器和 Pod 分配内存资源了解更多信息。