我正在使用此查询来计算节点的内存利用率
(1 - node_memory_MemAvailable_bytes{cluster="$cluster"}/node_memory_MemTotal_bytes{cluster="$cluster"}) * 100
我看到大约 25% 的值
但是当我kubectl top node
为同一个节点运行时,我看到一个大约 16% 的值
我正在使用此查询来计算节点的内存利用率
(1 - node_memory_MemAvailable_bytes{cluster="$cluster"}/node_memory_MemTotal_bytes{cluster="$cluster"}) * 100
我看到大约 25% 的值
但是当我kubectl top node
为同一个节点运行时,我看到一个大约 16% 的值
Prometheus 的节点导出器值之间的值差异kubectl top node
来自收集和计算这些数据的方式。
当您执行kubectl top node
Kubernetes 时,会从根 cgroup 读取值。具体从/sys/fs/cgroup/memory/memory.usage_in_bytes
和
/sys/fs/cgroup/memory/memory.stat
。总内存使用量计算为:memory.usage_in_bytes
- total_inactive_file
。
但是,Prometheus 的节点导出器从其中读取值,/proc/meminfo
然后根据您的查询进行计算,这似乎是正确的。
这个(仍然开放的)问题也正在讨论这种差异。
处理它的一种方法是简单地坚持一种测量和报告方法。