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

如何获取Pod的CPU使用中位数/分位数?现有查询求专业建议

问题描述

为调整Kubernetes Pod的limits与requests参数,需要获取Pod的CPU使用单一数值(而非数组形式),最初使用的查询语句返回数组:

max_over_time(
    avg by (my_label) (
      rate(container_cpu_usage_seconds_total{labels}[3m])
        * on (pod) group_left (my_label) 
       kube_pod_labels{labels}
    )
[1d:])
已采用的解决方案

改用quantile_over_time函数,选择0.99分位数(因中位数不符合业务需求),查询语句如下,已成功返回单一数值:

quantile_over_time(0.99,
    avg by (my_label) (
        rate(container_cpu_usage_seconds_total{labels,cpu="total"}[3m])
            * on (pod) group_left (my_label) 
        kube_pod_labels{labels})
[30d:15m])
补充建议与专业点评
  • 分位数选型:针对K8s资源调优,0.99分位数能覆盖绝大多数峰值场景,避免极端偶发流量导致的资源不足;若业务存在频繁突发大流量,可结合0.95分位数对比,平衡资源利用率与稳定性。
  • 时间参数校验:30d的时间范围能覆盖长周期业务波动,但步长15m需满足rate窗口(3m)小于步长的2倍(30m),避免数据点缺失,保证计算准确性。
  • 聚合维度合理性:avg by (my_label)按标签聚合Pod CPU使用率,若my_label是业务分组标签,逻辑没问题;如果是单Pod专属标签,建议考虑是否保留Pod维度再做分位数计算,避免丢失个体Pod的异常峰值信息。
  • 指标过滤优化:新增cpu="total"过滤,确保统计Pod总CPU使用量,避免单容器数据偏差,这个细节有效提升了数据准确性。
  • 结果验证与落地:可对比quantile_over_time(0.99, ...)与原max_over_time的结果,验证分位数是否能有效反映资源极端使用情况;调优后需持续监控Pod资源使用率,确认是否达到预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:48:20