当前位置: 首页 > news >正文

kubectl top 命令实战:实时监控 node 与 pod 的 CPU、RAM 资源占用

1. kubectl top 命令入门指南

刚接触Kubernetes那会儿,我最头疼的就是不知道集群资源到底被谁吃掉了。直到发现了kubectl top这个神器,它就像给集群装了实时监控仪表盘。这个命令能直接显示节点和容器的CPU、内存使用情况,比翻日志查监控系统快多了。

先说个真实案例:有次我们线上服务突然变慢,用kubectl top node一眼就发现某个worker节点内存占用95%,再用kubectl top pod定位到是个Java应用内存泄漏。整个过程不到2分钟,这就是为什么我说这是运维必备技能。

要使用这个命令,你的集群必须装好Metrics Server。可以运行下面这个命令检查:

kubectl get pods -n kube-system | grep metrics-server

如果没安装,用下面这个命令快速部署(需要集群管理员权限):

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

2. 监控节点资源实战技巧

2.1 基础监控命令

查看所有节点资源使用情况只需要一行命令:

kubectl top node

输出结果通常长这样:

NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% master-node 310m 7% 1456Mi 18% worker-node-1 420m 10% 2896Mi 36% worker-node-2 380m 9% 2543Mi 32%

这里有个实用技巧:加上--sort-by参数可以按资源使用率排序。比如想找出CPU负担最重的节点:

kubectl top node --sort-by=cpu

2.2 高级监控方案

我习惯用watch命令实现动态监控,每2秒刷新一次:

watch -n 2 kubectl top node

如果节点突然出现资源飙升,可以立即用-l参数筛选特定标签的节点。比如我们给GPU节点打了特殊标签:

kubectl top node -l accelerator=gpu

3. 深入掌握Pod资源监控

3.1 基础Pod监控

查看所有命名空间的Pod资源使用:

kubectl top pod -A

实际工作中我常用组合命令,比如找出内存占用最高的前5个Pod:

kubectl top pod -A --sort-by=memory | head -n 5

3.2 精准定位问题Pod

当某个服务出现异常时,可以用标签选择器精确定位。比如查看所有带app=nginx标签的Pod:

kubectl top pod -l app=nginx

更实用的方法是结合grep过滤。有次我们发现某个微服务内存泄漏,用这个命令快速定位:

kubectl top pod -A | grep order-service

4. 生产环境实用技巧

4.1 资源监控自动化

我在生产环境会设置这样的定时任务,把监控数据写入日志:

while true; do echo "$(date) Node资源使用情况:" >> cluster_monitor.log kubectl top node >> cluster_monitor.log echo "$(date) Pod资源Top10:" >> cluster_monitor.log kubectl top pod -A --sort-by=memory | head -n 10 >> cluster_monitor.log sleep 300 done

4.2 常见问题排查

遇到过几次kubectl top返回数据不准的情况,通常是因为:

  1. Metrics Server没有正确配置Heapster
  2. 节点时间不同步
  3. 网络策略阻止了指标采集

可以用这个命令检查Metrics Server日志:

kubectl logs -n kube-system $(kubectl get pods -n kube-system | grep metrics-server | awk '{print $1}')

如果发现Pod的CPU使用率显示异常高,可能是进程数太多。这时候需要加上--containers参数查看每个容器的详细数据:

kubectl top pod --containers
http://www.cnnetsun.cn/news/1890024.html

相关文章:

  • C语言基础知识点全面解析
  • AI工程师的自我修炼:从算法到商业价值
  • NVIDIA Profile Inspector终极指南:免费解锁NVIDIA显卡隐藏性能的完整解决方案
  • Realistic Vision V5.1虚拟摄影棚实战:为乡村振兴项目生成本土人物纪实影像
  • 从PCIe 3.0到6.0:为什么“阻抗一致性”比“绝对值”更重要?聊聊连接器与板材的选型影响
  • 能否给出更多现代C++设计模式的示例
  • 多模态大模型低资源训练避坑手册:从数据瓶颈、模态失衡到梯度冲突,12个生产环境真实故障点全复盘
  • 别等竞品上线才醒悟:2026奇点大会手势大模型商用许可窗口期仅剩117天(附合规接入倒计时自查表)
  • 英雄联盟智能助手League Akari:告别繁琐操作,专注核心对战
  • LaTeX技巧:优雅隐藏subfloat编号的三种实用方案
  • Ollama部署embeddinggemma-300m:端侧AI新范式——手机/笔记本实时嵌入生成教程
  • AlienFX Tools终极指南:深度解析开源Alienware控制框架与高效配置
  • M2LOrder模型解决GitHub访问与开源项目协作难题
  • FPGA verilog can mcp2515 altera xilinx工程 代码 程序
  • VRCFaceTracking安装和iPhone面捕配置教程,有bug
  • AI专著撰写宝典:热门工具深度剖析,让专著写作变得简单高效
  • DNF私服商业级部署实战:从零到一构建稳定可运营的服务端
  • 3步解决Windows 11 LTSC 24H2缺失微软商店问题:一键恢复完整应用生态
  • Agentic 应用落地必看!手把手搭建 Dify 全链路可观测系统
  • VideoSrt:一款让视频字幕制作变得简单的Windows工具
  • 3分钟搞定Windows风扇智能控制:FanControl终极免费指南
  • 【本源量子】精度与效率双提升!本源量子云上线量子气象灾害预测应用
  • Proxmox VE显卡直通后,如何给你的Ubuntu 22.04 LTS虚拟机装上NVIDIA驱动和CUDA 12.4
  • KeymouseGo:免编程自动化神器,轻松录制鼠标键盘操作实现高效办公
  • 【Linux】nohup 命令实战:后台任务管理与日志重定向技巧
  • Pixel Script Temple 与YOLOv5结合:为生成的像素画智能添加标注
  • 034.前端界面开发:用HTML/CSS/JS搭个检测结果展示页面
  • ExplorerPatcher终极指南:5分钟让Windows 11重获经典界面体验
  • 还在担心数据泄露?受管文件传输(MFT)有哪些主流选择?
  • 保姆级教程:用YOLOv8和PyQt5从零搭建一个无人机视角的车辆检测桌面应用