如何结合kubectl命令按节点对Pod按CPU/内存使用率排序
按节点维度排序Pod资源使用率的实现方案
原生kubectl top没有直接支持按节点聚合、排序Pod资源的内置参数,可通过组合命令行工具快速实现该需求,无需安装额外组件:
1. 全集群按节点分组,组内按资源排序
同节点内Pod按CPU使用率降序排列
kubectl top pod -A --no-headers | sort -k7,7 -k3,3r
同节点内Pod按内存使用率降序排列
kubectl top pod -A --no-headers | sort -k7,7 -k4,4r
参数说明:
-A拉取所有命名空间的Pod数据-k7,7优先按第7列(Pod所在节点名)排序,实现同节点Pod聚合-k3,3r/-k4,4r同节点内分别按第3列CPU值、第4列内存值降序排列
2. 单节点下Pod资源排序
如果只需查看指定节点(示例节点名为worker-node-01)的Pod排序,可通过字段选择器过滤:
按CPU降序
kubectl top pod -A --no-headers --field-selector spec.nodeName=worker-node-01 | sort -k3,3r
按内存降序
kubectl top pod -A --no-headers --field-selector spec.nodeName=worker-node-01 | sort -k4,4r
3. 节点维度Pod总资源聚合统计
如果需要统计每个节点上所有Pod的CPU、内存总占用,可搭配awk实现聚合计算,结果可直接与kubectl top nodes的节点总使用率对照排查问题:
kubectl top pod -A --no-headers | awk '{node_cpu[$7]+=$3; node_mem[$7]+=$4} END {for(node in node_cpu) print node, "总CPU(毫核):" node_cpu[node], "总内存(Mi):" node_mem[node]}' | sort -k2,2r
注意:不同版本kubectl的
top pod输出列顺序可能存在差异,可先执行kubectl top pod -A确认列索引,再调整sort、awk中的列号参数即可。
内容的提问来源于stack exchange,提问作者lapinkoira
相关产品推荐
相关产品推荐

