kubectl 命令,用于查找每个节点消耗最多的内存 Pod



kubectl top pod --all-namespaces | sort --reverse --key 4 --numeric | head -10提供集群中的顶级 Pod。如何获取每个节点的顶级内存消耗 Pod?

在 Ubuntu 中,这是对我有用的命令:

按内存使用情况排序:

kubectl get po -A -owide | grep ${NODE_NAME} | awk '{print $1, $2}' | xargs -n2 kubectl top pod --no-headers -n $1 | sort --key 3 -nr | column -t

按 CPU 使用率排序:

kubectl get po -A -owide | grep ${NODE_NAME} | awk '{print $1, $2}' | xargs -n2 kubectl top pod --no-headers -n $1 | sort --key 2 -nr | column -t

如果仍然需要对每个节点的 pods 列表的前十个元素进行排序和保留,可以使用以下命令:kubectl get po -o wide | grep <node> | awk {'print $1'} | xargs -n1 command kubectl top po --no-headers | sort --reverse --key 3 --numeric | head -10

尝试:

kubectl get pods --all-namespaces -o wide | grep <node> | grep Running | awk '{print $1" "$2}' | while read namespace pod; do kubectl top pods --no-headers --namespace $namespace $pod; done  | sort -t ' ' --key 2 --numeric --reverse

这将检查所有命名空间,以防您有

这在 macOS 上对我有用,其中 xargs 不接受相同的参数,但应该在任何 *nix 系统中工作

kubectl 描述节点node_name会给你如下的东西。

Namespace   Name  CPU Requests  CPU Limits    Memory Requests   Memory Limits     AGE
---------   ----  ------------  ----------    ---------------   -------------     ---
0 (0%)        0 (0%)        0 (0%)            0 (0%)            11d
200m (5%)     0 (0%)        400Mi (5%)        600Mi (8%)        22h
25m (0%)      1 (25%)       512Mi (6%)        0 (0%)            14d
25m (0%)      1 (25%)       512Mi (6%)        0 (0%)            14d
0 (0%)        0 (0%)        0 (0%)            0 (0%)            14d
10m (0%)      0 (0%)        0 (0%)            0 (0%)            14d
400m (10%)    2 (50%)       2176Mi (29%)      1Gi (13%)         14d
1100m (27%)   6800m (170%)  1134217728 (14%)  5073741824 (65%)  14d
100m (2%)     0 (0%)        100Mi (1%)        100Mi (1%)        14d
100m (2%)     0 (0%)        0 (0%)            0 (0%)            14d
0 (0%)        0 (0%)        0 (0%)            0 (0%)            14d
100m (2%)     400m (10%)    30Mi (0%)         200Mi (2%)        14d
100m (2%)     400m (10%)    200Mi (2%)        512Mi (6%)        14d
100m (2%)     400m (10%)    200Mi (2%)        512Mi (6%)        14d
110m (2%)     2010m (50%)   256Mi (3%)        1152Mi (15%)      14d

这对我有用。

echo <nodename>  | xargs bash -c 'kubectl get pod -A -o wide | grep $0'| awk {'print $1 " " $2'} | xargs -l bash -c 'kubectl top pods -n $0 $1 --use-protocol-buffers --no-headers'

当然

echo <nodename>

可以更改

kubectl get nodes

最新更新