来自 OOMKilled pod 的重叠 kubelet 的 container_memory_rss 指标

Nav*_*Nav 5 kubernetes prometheus kubelet

我正在调查我的 kubernetes 集群中的一项服务的 OOM 终止。

我做的第一件事是查看被杀死的 pod 的内存使用情况的 Grafana 图,令我惊讶的是,我看到在 OOM 附近发生了内存使用量的大幅飙升。然而,当时 pod 本身并没有运行任何计算,所以这样的峰值非常令人困惑(pod 本身存在内存泄漏,这使得它慢慢达到内存限制,但峰值不是它的一部分)。

我使用 Prometheus 仔细观察了峰值,我了解到,当旧 pod 被新 pod 替换时,会kubelet报告来自两个 pod 的指标,然后由于sum by (container)在 grafana 图中使用,这些指标显示了一个峰值。

没有聚合:( container_memory_rss{pod="XXX", container!="POD", container!=""}) container_memory_rss{pod="XXX", container!="POD", container!=""}

带聚合:( sum by(container) (container_memory_rss{pod="XXX", container!="POD", container!=""})) sum by(container) (container_memory_rss{pod="XXX", container!="POD", container!=""})

我想知道是否可以以某种方式避免重叠,以及它是否源于我这边的一些不正确的配置,或者它是一种行为kubeletprometheus无法避免的行为。

谢谢!