列出按节点过滤的 `kubectl top pods`

Voj*_*ěch 6 kubernetes

有没有办法top pods按节点过滤?

用例:我有一个节点,据报告它使用了 103% 的 cpu,我想验证是哪个 pod 导致了它。

小智 8

我认为没有直接的方法可以使用kubectl top pods命令来执行此操作,因为过滤的唯一选项是仅适用于 pod 的标签/选择器。

对于您的用例,您可以使用以下命令:

kubectl get pods -o wide | grep <node> | awk {'print $1'} | xargs -n1 command kubectl top pods  --no-headers
Run Code Online (Sandbox Code Playgroud)
  • kubectl get pods -o wide:显示 Pod 及其关联的节点信息
  • grep <node>:让您过滤位于特定节点上的 pod
  • awk {'print $1'}:打印第一列(pod 的名称)
  • xargs -n1 command kubectl top pods --no-headers:为每个 pod 执行不带标头的 top 命令(NAME、CPU、MEMORY)

此外,您可以使用以下命令检查为一个特定节点中的每个 Pod 设置的限制kubectl describe node <node>

  • 请注意,上面的命令使用默认命名空间,并且不会按 CPU/内存使用情况对结果进行排序。这可以调整为`kubectl get pods --all-namespaces -o Wide | grep &lt;节点名称&gt; | awk '{print $1" "$2}' | '{print $1" "$2}' | xargs -n2 kubectl top pods --no-headers --namespace | xargs -n2 kubectl top pods --no-headers --namespace | xargs -n2 kubectl top pods --no-headers --namespace sort -t ' ' --key 2 --numeric --reverse` 其中使用 `--key 2` 或 `--key 3` 分别按 CPU 或内存排序 (8认同)