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

如何在仪表盘展示Kubernetes Pod资源?当前仅显示Worker节点资源

方案调整:在Kubernetes环境下让仪表盘展示Pod资源使用情况

首先纠正一个认知:Pod并非没有资源相关数据——哪怕你没给Pod显式分配requests/limits,K8s也会将其归为BestEffort QoS类别,而且Pod运行时的CPU、内存实时使用量是可以被采集到的。下面是具体的改造方案:

一、获取Pod资源数据的两种核心方式

  • 拉取Pod的资源配置信息:调用Kubernetes API的/api/v1/pods接口,每个Pod的spec.containers[].resources字段里存着requests(资源请求)和limits(资源限制)的配置;如果没显式设置,这部分字段为空,直接标注为「未配置请求/限制(BestEffort)」即可。
  • 采集Pod实时资源使用数据:
    • 用kubelet内置的cAdvisor:每个Worker节点的kubelet都自带cAdvisor,直接访问kubelet的/metrics/cadvisor接口,就能拿到该节点上所有Pod的CPU、内存、磁盘IO等实时运行数据。
    • 用Prometheus(如果已部署):通过Prometheus的预定义指标,比如container_cpu_usage_seconds_total(CPU累计使用时长)、container_memory_working_set_bytes(内存工作集),可以查询Pod的实时资源使用率,再做聚合计算后展示。

二、仪表盘的具体改造步骤

  • 新增Pod资源展示模块:在现有节点资源展示区旁边,加一个Pod列表或卡片视图,每个条目至少包含:
    • Pod名称、所属命名空间、运行节点
    • 资源请求/限制(CPU、内存):无配置时显示「无限制(BestEffort)」
    • 实时使用率:CPU使用率(可选择「当前使用量/请求量」或「当前使用量/节点可分配量」)、内存使用率
  • 数据关联与展示逻辑:
    1. 先调用K8s API拉取所有Pod的基础信息和资源配置
    2. 再从cAdvisor或Prometheus拉取对应实时数据,和Pod做关联匹配
    3. 对无资源配置的Pod,直接展示实际使用量,或者展示其使用量占所在节点剩余资源的比例
  • 优化展示体验:
    • 支持按命名空间、节点过滤Pod
    • 对资源使用率过高的Pod(比如内存使用率超80%)标红提示
    • 可选添加Pod资源使用趋势图(比如最近15分钟的CPU/内存波动)

三、需要注意的细节

  • 权限配置:确保仪表盘的服务账号拥有pods资源的list、watch权限,以及访问kubelet cAdvisor接口的权限,否则拉取不到数据。
  • 性能控制:如果集群Pod数量多,别太频繁调用API,建议每30秒拉取一次并做本地缓存,避免给K8s API Server造成压力。
  • QoS分类展示:可以按Pod的QoS类别(Guaranteed、Burstable、BestEffort)分组展示,方便快速区分不同优先级的Pod资源状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:55:19