【Kubernetes】Prometheus关于内存使用的Metric

【Kubernetes】Prometheus关于内存使用的Metric
今天在翻Prometheus的时候,发现了一个Pod的内存使用居然和另外一个看板显示的不一致。通过查看Prometheus QL发现,两种指标所表示的含义不大一样。

上面这张图所使用的Prometheus QL为
sum by(container) (container_memory_usage_bytes{pod="istio-tracing-79cfbc6889-vm2vw", container=~".*", container!="POD", container!=""})
经过Google一番后,
【Kubernetes】Prometheus关于内存使用的Metric
而另外一个看板所使用的QL则是
sum (container_memory_working_set_bytes{id="/",instance=~"^10.120.10.161$",job=~"kubernetes.*"})\

到了这里,我就有一个疑问:在Kubernetes设置中,我们可以通过设置Memory的Limit给一个Pod设置最高的内存使用大小。那这个内存是用的 container_memory_usage_bytes还是 container_memory_working_set_byte?

这篇博客通过Go语言实现了一个实验,证明了Kubernetes Memory Limit看的实际上是 container_memory_working_set_byte。