You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Prometheus排除Master节点统计K8s集群内存使用率?

问题描述

在K8s集群中用Prometheus统计资源使用率时,遇到统计结果失真的问题:集群CPU/内存使用率显示为80%,但存在大量Pending Pod。原因是Master节点带有污点无法调度Pod,而统计时误将Master节点的资源纳入计算,实际Worker节点资源已耗尽。

以内存使用率统计为例,原查询语句如下:

1 - sum(avg_over_time(node_memory_MemAvailable_bytes{container="node-exporter"}[10m]))
/ sum(node_memory_MemTotal_bytes)

已通过以下查询获取到Master节点的instance标签:

leader_election_master_status{name="kube-scheduler"}

返回结果示例:

leader_election_master_status{endpoint="http-metrics", instance="172.20.62.250:10251", [...]} 

需要修改内存使用率统计查询,在对node_memory_MemAvailable_bytes和node_memory_MemTotal_bytes求和时,排除instance为172.20.62.250:10251的Master节点。

解决方案

直接在PromQL的指标过滤条件中添加instance!="目标Master实例地址"来排除指定节点,修改后的查询语句如下:

1 - sum(avg_over_time(node_memory_MemAvailable_bytes{container="node-exporter", instance!="172.20.62.250:10251"}[10m]))
/ sum(node_memory_MemTotal_bytes{instance!="172.20.62.250:10251"})

补充说明

  • 对于node_memory_MemAvailable_bytes,在原有container="node-exporter"过滤基础上,新增instance!="172.20.62.250:10251",确保只计算Worker节点的可用内存平均值。
  • 对于node_memory_MemTotal_bytes,同样添加instance!="172.20.62.250:10251"过滤,排除Master节点的总内存。
  • 如果集群有多个Master节点,可以用instance!~"正则表达式"批量排除,比如instance!~"172.20.62.*:10251"匹配同网段的所有Master实例。

内容的提问来源于stack exchange,提问作者phil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 04:25:16