如何编写PromQL查询统计K8s集群不同CPU内存配置的节点数量
统计Kubernetes节点CPU内存组合配置数量的PromQL解法
核心思路
- 分别提取CPU、内存维度的节点可分配资源指标,将资源值转换为对应标签
- 按节点名称关联两类指标,合并同一节点的CPU、内存标签
- 按CPU、内存组合分组统计节点数量
可用查询语句
count by (cpu, memory) ( # 提取CPU指标值为cpu标签 label_replace( kube_node_status_allocatable{resource="cpu", unit="core"}, "cpu", "$1", "value", "(.*)" ) # 按node标签关联内存指标,合并memory标签 * on (node) group_left(memory) # 提取内存指标值为memory标签 label_replace( kube_node_status_allocatable{resource="memory", unit="gb"}, "memory", "$1", "value", "(.*)" ) )
结果说明
针对你提供的样本数据,上述查询的输出和你期望的格式完全匹配:
{cpu="21", memory="64"} 2 {cpu="61", memory="128"} 3
注意事项
如果你的kube_node_status_allocatable内存指标默认返回单位为字节,需要先做单位转换再提取标签,修改内存侧的处理逻辑即可:
label_replace( kube_node_status_allocatable{resource="memory"} / 1073741824, "memory", "$1", "value", "(.*)" )
内容的提问来源于stack exchange,提问作者goyalankit
相关产品推荐
相关产品推荐

