kubectl top 是什么
kubectl top 显示节点与 Pod 的实时 CPU 与内存用量,数据来自集群里部署的指标采集组件。它回答的是「谁在吃资源」:把用量与请求值、上限值摆在一起看,才能判断是配置不合理还是负载真的涨了。它是容量巡检与资源类故障排查的快速入口。
数值的性质
输出是最近一次采样的瞬时值,不是趋势曲线,不能拿单次结果判断容量是否够用。Pod 维度默认把该 Pod 内所有容器的用量加总,要看具体是哪个容器超标需要按容器拆分查看。需要历史趋势与峰值分析时,应使用监控系统而不是这条命令。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,集群内需部署指标采集组件 |
|---|---|
| 语法 | kubectl top node|pod [名称] [选项] |
| 数据来源 | 集群指标接口,通常由指标采集组件提供 |
| 统计范围 | 节点维度覆盖整机用量,Pod 维度默认聚合所有容器 |
| 采样特点 | 瞬时值,随负载波动 |
| 权限要求 | 对指标资源有读取权限 |
典型使用场景
- 定位高消耗对象:按 CPU 或内存排序,找出占用最多的实例
- 核对请求与上限是否合理:对比实际用量与声明值,发现长期低效或临界配置
- 排查资源类故障:确认容器是否逼近内存上限,预判重启风险
- 节点容量巡检:查看各节点整体用量,判断是否需要扩容或迁移负载
- 发布后验证:确认新版本资源占用没有明显上涨
- 排查节流:CPU 用量贴近上限时,延迟问题可以从这里得到线索
常用示例
常用示例
kubectl top node # 节点整体用量
kubectl top pod -n prod --sort-by=cpu # 按 CPU 排序
kubectl top pod -n prod --sort-by=memory # 按内存排序
kubectl top pod web-x --containers # 拆分到容器维度
kubectl top pod -A --sort-by=memory | head -20 # 全集群内存消耗前列
kubectl get pods -n prod -o wide # 对照所在节点判断影响面输出逐列读法
| 列 | 含义 | 怎么用 |
|---|---|---|
| NAME | 节点或 Pod 名称 | 定位到具体对象 |
| CPU(核或毫核) | 瞬时 CPU 用量 | 与请求值和上限对照 |
| CPU 百分比 | 相对可分配量的比例 | 节点维度看是否接近满载 |
| MEMORY | 瞬时内存用量 | 贴近上限时警惕被强制终止 |
| MEMORY 百分比 | 相对可分配量的比例 | 判断节点内存压力 |
报指标接口不可用通常是指标采集组件未部署或未就绪,属于集群侧问题,不是命令本身出错。
对比请求与上限要看按容器拆分的输出,只看 Pod 总和的加总数据容易误判是哪个容器超限。