如何通过PromQL按nodegroup_name分组统计Kubernetes集群节点总数?
按NodeGroup分组查询Kubernetes节点总数的PromQL语句
核心查询语句
如果你的Kubernetes节点带有nodegroup_name标签(云厂商托管集群或自建集群手动添加),可以用以下PromQL按节点组统计总节点数:
count(kube_node_info) by (nodegroup_name)
语句说明
kube_node_info:由kube-state-metrics提供的节点元信息指标,每个节点对应一条时间序列,包含节点的所有标签(包括nodegroup_name)count():聚合函数,统计每个分组下的节点数量(即时间序列条数)by (nodegroup_name):指定按nodegroup_name标签进行分组聚合
适配不同集群的调整
不同云厂商的节点组标签键可能不同,需要替换为实际标签:
- AWS EKS:标签键为
eks.amazonaws.com/nodegroup,查询语句为:count(kube_node_info) by (eks_amazonaws_com_nodegroup) - GKE:标签键为
cloud.google.com/gke-nodepool,查询语句为:count(kube_node_info) by (cloud_google_com_gke_nodepool)
扩展:统计Ready状态的节点数
如果需要按节点组统计处于Ready状态的节点,可使用:
count(kube_node_status_condition{condition="Ready", status="true"}) by (nodegroup_name)
前提条件
确保集群已部署并正确配置kube-state-metrics,Prometheus已完成该指标的采集配置。
内容的提问来源于stack exchange,提问作者kafka
相关产品推荐
相关产品推荐

