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

张开发
2026/4/14 16:14:40 15 分钟阅读

分享文章

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.yaml2. 监控节点资源实战技巧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-bycpu2.2 高级监控方案我习惯用watch命令实现动态监控每2秒刷新一次watch -n 2 kubectl top node如果节点突然出现资源飙升可以立即用-l参数筛选特定标签的节点。比如我们给GPU节点打了特殊标签kubectl top node -l acceleratorgpu3. 深入掌握Pod资源监控3.1 基础Pod监控查看所有命名空间的Pod资源使用kubectl top pod -A实际工作中我常用组合命令比如找出内存占用最高的前5个Podkubectl top pod -A --sort-bymemory | head -n 53.2 精准定位问题Pod当某个服务出现异常时可以用标签选择器精确定位。比如查看所有带appnginx标签的Podkubectl top pod -l appnginx更实用的方法是结合grep过滤。有次我们发现某个微服务内存泄漏用这个命令快速定位kubectl top pod -A | grep order-service4. 生产环境实用技巧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-bymemory | head -n 10 cluster_monitor.log sleep 300 done4.2 常见问题排查遇到过几次kubectl top返回数据不准的情况通常是因为Metrics Server没有正确配置Heapster节点时间不同步网络策略阻止了指标采集可以用这个命令检查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

更多文章