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

注意事项

  1. 确保 metrics-server 已经在集群中正常运行,否则 kubectl top 命令无法工作
  2. 需要有足够的权限查看所有命名空间的资源使用情况
  3. 如果 CPU 使用率相同,上述命令会返回第一个匹配的 Pod

完整解决方案

最简洁有效的解决方案是:

kubectl top pod -A --sort-by=cpu --no-headers | head -n 1 | awk '{print $2","$1}' > high_cpu_pod.txt

这个命令:

  1. -A--all-namespaces:查看所有命名空间
  2. --sort-by=cpu:按 CPU 使用量排序
  3. --no-headers:不显示标题行
  4. head -n 1:取第一行(即 CPU 使用量最高的)
  5. awk '{print $2","$1}':提取 Pod 名称和命名空间并以逗号分隔
  6. > high_cpu_pod.txt:将结果重定向到文件

posted on 2025-05-11 12:16  Leo-Yide  阅读(57)  评论(0)    收藏  举报