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

如何在Grafana中展示K8s Pod运行时长及指定Deployment相关数据

Kubernetes Pod运行时长获取与结束时间指标说明

有没有直接获取Pod结束时间的指标?

原生kube-state-metrics里没有专门的Pod结束时间指标,但可以通过以下方式间接获取终止时间:

  • 对于进入Failed或Succeeded状态的Pod,kube_pod_status_phase指标的时间戳就是Pod进入终止状态的时刻;
  • 容器层面,kube_pod_container_status_terminated_start_time指标的时间戳代表容器终止的时间,可作为Pod结束时间的参考(单容器Pod可直接用这个)。

如何获取指定Deployment下各Pod的运行时长?

分两种场景处理:

1. 运行中Pod的实时运行时长

用PromQL计算当前时间与Pod启动时间的差值,同时关联到所属Deployment:

sum by (pod) (
  time() - kube_pod_start_time{namespace="default"}
) * on(pod) group_left(deployment) (
  label_replace(kube_pod_metadata_labels{namespace="default", deployment!=""}, "deployment", "$1", "label_deployment", "(.*)")
)

如果要指定Deployment,在查询里加deployment="consumer-deployment"即可。计算结果是秒数,在Grafana中可以直接设置面板单位为分钟/小时,自动转换显示。

2. 已终止Pod的运行时长

结合容器终止时间与Pod启动时间计算:

sum by (pod) (
  kube_pod_container_status_terminated_start_time{} - kube_pod_start_time{}
) * on(pod) group_left(deployment) (
  label_replace(kube_pod_metadata_labels{namespace="default", deployment!=""}, "deployment", "$1", "label_deployment", "(.*)")
)

这个查询只会返回已终止Pod的运行时长,结果同样以秒为单位。

输出你要的格式(如pod1,duration:15)

如果用Prometheus API结合命令行工具处理,示例命令如下(替换你的Prometheus地址):

curl -G 'http://your-prometheus-ip:9090/api/v1/query' \
--data-urlencode 'query=sum by (pod) (time() - kube_pod_start_time{namespace="default", deployment="consumer-deployment"})' \
| jq -r '.data.result[] | "\(.metric.pod),duration:\(.value[1] | tonumber / 60 | floor)"'

该命令会把秒数转换为分钟并取整,输出你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:42:30