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