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

如何通过Prometheus获取Pod从调度到运行的启动耗时

用PromQL计算Pod从调度到启动的耗时

要获取Pod从Scheduled状态到Running状态的启动耗时,你可以利用kube-state-metrics暴露的核心指标,通过PromQL计算时间差实现:

核心指标说明

  • kube_pod_scheduled_time:记录Pod被成功调度到节点的Unix时间戳(秒级)
  • kube_pod_container_status_started_time:记录Pod内容器进入Running状态的Unix时间戳(秒级)

基础查询(秒级耗时)

一个Pod可能包含多个容器,通常取最早启动的容器时间作为Pod进入Running状态的标记,用以下查询:

min by (pod, namespace) (kube_pod_container_status_started_time{kube_pod_status_phase="Running"}) 
- 
kube_pod_scheduled_time{kube_pod_status_phase="Running"}
  • min by (pod, namespace):按Pod和命名空间聚合,取Pod内最早启动的容器时间
  • 时间戳差值直接为秒级耗时,结果大于0的数值即为有效耗时

转换为分钟级耗时

如果需要更直观的分钟数,可将结果除以60:

(min by (pod, namespace) (kube_pod_container_status_started_time{kube_pod_status_phase="Running"}) 
- 
kube_pod_scheduled_time{kube_pod_status_phase="Running"}) 
/ 60

筛选最近启动的Pod

如果只想查看最近1小时内调度完成的Pod耗时,可添加时间范围过滤:

(min by (pod, namespace) (kube_pod_container_status_started_time{kube_pod_status_phase="Running"}) 
- 
kube_pod_scheduled_time{kube_pod_status_phase="Running"}) 
* on(pod, namespace) group_left() 
(kube_pod_scheduled_time{kube_pod_status_phase="Running"} > time() - 3600)
  • time() - 3600代表当前时间往前推1小时,可根据需求调整数值(比如7200代表2小时)

注意事项

  • 确保集群已部署kube-state-metrics,并且Prometheus已配置抓取该组件的指标
  • 若Pod未进入Running状态(比如Pending、Failed),对应的指标会缺失或不满足过滤条件,不会出现在结果中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:12:18