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

如何用PromQL按时间统计单命名空间下各Deployment的运行Pod数

按Deployment维度统计并绘制Pod数时序图表的方案

针对同一命名空间下多个Deployment的Pod运行数时序统计需求,以下是几种可行的实现方式:

一、Prometheus + Grafana(生产环境推荐)

这是Kubernetes监控的标准组合,支持精准的维度过滤和可视化:

  1. 编写针对性的PromQL查询
    要统计指定Deployment的运行Pod数,可通过Pod的归属关系或标签过滤:
    • 统计bob Deployment的运行Pod数:
      sum(kube_pod_status_phase{namespace="bob", phase="Running"} * on(pod, namespace) group_left() kube_pod_owner{owner_kind="Deployment", owner_name="bob"})
      
    • 统计bob-worker Deployment的运行Pod数:
      sum(kube_pod_status_phase{namespace="bob", phase="Running"} * on(pod, namespace) group_left() kube_pod_owner{owner_kind="Deployment", owner_name="bob-worker"})
      
    如果你的Pod模板带有明确的Deployment关联标签(比如app=bob),也可以用更简洁的查询:
    sum(kube_pod_status_phase{namespace="bob", phase="Running", label_app="bob"})
    
  2. Grafana可视化配置
    • 添加Prometheus作为数据源
    • 新建两个独立面板,分别填入上述两个查询
    • 面板类型选择「折线图」,设置标题(如「Bob Deployment运行Pod数」)和时间范围,即可生成按时间变化的Pod数图表

二、kubectl + 脚本定时采集(临时/测试场景)

如果不需要长期监控,可通过脚本定时采集数据,再用工具生成图表:

  1. 编写采集脚本
    保存为pod-monitor.sh:
    #!/bin/bash
    OUTPUT_FILE="pod_counts.csv"
    # 初始化CSV表头
    echo "timestamp,bob_running_pods,bob-worker_running_pods" > $OUTPUT_FILE
    # 每分钟采集一次(可调整sleep时长)
    while true; do
        TIMESTAMP=$(date +%Y-%m-%dT%H:%M:%S)
        # 统计bob Deployment的Running状态Pod数(减去表头行)
        BOB_PODS=$(kubectl get pods -n bob -l app=bob --field-selector=status.phase=Running | wc -l)
        BOB_PODS=$((BOB_PODS - 1))
        # 统计bob-worker Deployment的Running状态Pod数
        BOB_WORKER_PODS=$(kubectl get pods -n bob -l app=bob-worker --field-selector=status.phase=Running | wc -l)
        BOB_WORKER_PODS=$((BOB_WORKER_PODS - 1))
        # 写入CSV
        echo "$TIMESTAMP,$BOB_PODS,$BOB_WORKER_PODS" >> $OUTPUT_FILE
        sleep 60
    done
    
  2. 生成图表
    • 执行chmod +x pod-monitor.sh && ./pod-monitor.sh运行脚本,采集足够数据后停止
    • 将生成的pod_counts.csv导入Excel或用gnuplot等工具生成折线图

三、基于kube-state-metrics的简化查询

如果你的集群已部署kube-state-metrics,可直接用Deployment的可用副本数指标(与实际运行Pod数高度一致):

  • bob Deployment的可用Pod数:
    kube_deployment_status_replicas_available{namespace="bob", deployment="bob"}
    
  • bob-worker Deployment的可用Pod数:
    kube_deployment_status_replicas_available{namespace="bob", deployment="bob-worker"}
    

此指标更轻量,适合快速搭建监控面板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:13:06