Pod-Kubernetes 查找最高 CPU 使用率 Pod 的问题
解决 Kubernetes 查找最高 CPU 使用率 Pod 的问题
题目理解
题目要求我们在所有命名空间(包括 kube-system)中找出 CPU 使用率最高的 Pod,并将结果以 "pod_name,namespace" 格式存入 high_cpu_pod.txt 文件。
解决步骤
1. 首先设置正确的上下文
题目已经给出了设置上下文的命令,我们可以直接执行:
kubectl config use-context kubernetes-admin@kubernetes
2. 查找 CPU 使用率最高的 Pod
我们需要使用 kubectl top pod 命令结合一些排序和筛选技巧来找到 CPU 使用率最高的 Pod。
方法一:使用 JSON 输出和 jq 处理
kubectl top pod --all-namespaces --sort-by=cpu --no-headers | head -n 1 | awk '{print $2","$1}' > high_cpu_pod.txt
方法二:如果集群支持 metrics-server 并且有足够权限
kubectl top pod -A --sort-by=cpu | awk 'NR==2{print $2","$1}' > high_cpu_pod.txt
方法三:更详细的方法(适用于所有情况)
# 获取所有命名空间中 Pod 的 CPU 使用情况
kubectl top pods --all-namespaces > cpu_usage.txt
# 使用 sort 命令按 CPU 使用量排序(假设第三列是 CPU 使用量)
sort -k3 -n -r cpu_usage.txt | head -n 1 | awk '{print $2","$1}' > high_cpu_pod.txt
# 清理临时文件
rm cpu_usage.txt
3. 验证结果
cat high_cpu_pod.txt
注意事项
- 确保 metrics-server 已经在集群中正常运行,否则
kubectl top命令无法工作 - 需要有足够的权限查看所有命名空间的资源使用情况
- 如果 CPU 使用率相同,上述命令会返回第一个匹配的 Pod
完整解决方案
最简洁有效的解决方案是:
kubectl top pod -A --sort-by=cpu --no-headers | head -n 1 | awk '{print $2","$1}' > high_cpu_pod.txt
这个命令:
-A或--all-namespaces:查看所有命名空间--sort-by=cpu:按 CPU 使用量排序--no-headers:不显示标题行head -n 1:取第一行(即 CPU 使用量最高的)awk '{print $2","$1}':提取 Pod 名称和命名空间并以逗号分隔> high_cpu_pod.txt:将结果重定向到文件

浙公网安备 33010602011771号