当前位置: 首页 > 知识库问答 >
问题:

kubernetes集群中CPU利用率最高的三个pod

程谦
2023-03-14

如何获取库伯内特斯集群中 CPU 使用率最高的前三个容器?

kubectl top po --all-namespaces 

上面的命令为所有名称空间中的所有pod提供了CPU和内存利用率。如何将其限制在CPU利用率最高的前三个机架上?

此外,我尝试按CPU排序,但似乎排序不起作用。

kubectl top po --all-namespaces --sort-by="cpu"

输出:

NAMESPACE     NAME                             CPU(cores)   MEMORY(bytes)
kube-system   weave-net-ksfp4                  1m           51Mi
kube-system   kube-controller-manager-master   10m          50Mi
kube-system   coredns-5644d7b6d9-rzd64         2m           6Mi
kube-system   weave-net-h4xlg                  1m           77Mi
kube-system   kube-proxy-lk9xv                 1m           19Mi
kube-system   coredns-5644d7b6d9-v2v4m         3m           6Mi
kube-system   kube-scheduler-master            2m           21Mi
kube-system   kube-apiserver-master            26m          228Mi
kube-system   kube-proxy-lrzjh                 1m           9Mi
kube-system   etcd-master                      12m          38Mi
kube-system   metrics-server-d58c94f4d-gkmql   1m           14Mi

共有3个答案

寿高阳
2023-03-14

有不同的方法可以实现这一点,示例如下

    < li> -按标题排序 < li> -按awk排序 < li> 排序

以下是所有节点,仅--sort by=cpu

$ kubectl top pod --all-namespaces --sort-by=cpu
NAMESPACE     NAME                                   CPU(cores)   MEMORY(bytes)   
default       rabbit                                 969m         1Mi             
default       lion                                   912m         1Mi             
kube-system   kube-apiserver-controlplane            42m          286Mi           
kube-system   etcd-controlplane                      14m          36Mi            
kube-system   kube-controller-manager-controlplane   12m          44Mi            
kube-system   kube-scheduler-controlplane            4m           16Mi            
kube-system   coredns-f9fd979d6-9x8vb                2m           8Mi   

1.--按awk排序

$ kubectl top pod --all-namespaces --sort-by=cpu | awk 'FNR <= 4'
NAMESPACE     NAME                                   CPU(cores)   MEMORY(bytes)   
default       rabbit                                 972m         1Mi             
default       lion                                   900m         1Mi             
kube-system   kube-apiserver-controlplane            42m          286Mi  

2. --按头排序

$ kubectl top pod --all-namespaces --sort-by=cpu | head -n 4
NAMESPACE     NAME                                   CPU(cores)   MEMORY(bytes)   
default       rabbit                                 970m         1Mi             
default       lion                                   909m         1Mi             
kube-system   kube-apiserver-controlplane            43m          293Mi 

3.排序

$ kubectl top pod --all-namespaces | sort --reverse --numeric-sort --key 3 | head -n 4
default       rabbit                                 971m         1Mi             
default       lion                                   913m         1Mi             
kube-system   kube-apiserver-controlplane            41m          286Mi           
kube-system   etcd-controlplane                      15m          38Mi  

注意:如果您不想打印标题,只需放置一个选项 --无标题

赵禄
2023-03-14

您可以使用以下命令:

kubectl top pods --all-namespaces  --sort-by=cpu | sort --reverse --key 3 --numeric | head -n 3

head 命令将为您提供前 3 个 Pod。

长孙高远
2023-03-14

排序应在下一版本中修复 - https://github.com/kubernetes/kubernetes/issues/81270

同时你可以用这个

kubectl top pod --all-namespaces --no-headers \
 | sort --key 3 --numeric \
 | tail -3
 类似资料:
  • 我正在使用mod安全规则https://github.com/SpiderLabs/owasp-modsecurity-crs清理用户输入数据。在将用户输入与mod security rule正则表达式匹配时,我面临着cpu激增和延迟。总的来说,它包含500个正则表达式来检查不同类型的攻击(xss、badrobots、generic和sql)。对于每个请求,我检查所有参数并对照所有这500个正则表

  • 谁能解释一下这两种方法的真正区别 vm。GetTotalizationofCPU(CloudSim.clock()); 和 cloudlet.get利用OfCpu(CloudSim.clock()); 提前感谢

  • 问题内容: 在Linux中是否有命令或任何其他方式来获取当前或平均 CPU使用率 (对于多处理器环境)? 我在小型系统中使用嵌入式Linux。基本上,我需要确定CPU利用率,以便在CPU利用率很高的情况下,可以将新进程转移到系统中的另一个控制器,而不是在可能忙于执行更重要进程的主处理器上执行。 这个问题不仅仅在于对进程进行优先级排序,另一个控制器可以充分处理新进程,只是当主处理器不忙时,我希望它来

  • 我有一个Java应用程序(基于web),它有时会在几个小时内显示非常高的CPU利用率(几乎90%)。Linux的TOP命令显示了这一点。重新启动应用程序时,问题就会消失。 所以要调查: 我使用线程转储来查找线程正在执行的操作。有几个线程处于“可运行”状态,一些线程处于其他一些状态。在重复执行线程转储时,我确实看到一些线程总是处于“可运行”状态。因此,他们似乎是罪魁祸首。 但我无法确定,哪个线程占用

  • 我正在我的a集群(10个节点)中运行几个kubernetes pod。每个pod只包含一个托管一个工作进程的容器。我已指定容器的CPU“限制”和“请求”。以下是在节点(crypt12)上运行的一个pod的描述。 以下是我运行“kubectl可描述节点crypt12”时的输出 更新:我在github问题讨论中找到了问题的答案:“kubectl描述节点”中的cpu百分比是“cpu限制/#个内核”。由于

  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 最近,我的服务器CPU性能一直很高。 CPU平均负载为13.91(1分钟)11.72(5分钟)8.01(15分钟),而我的站点的流量仅略有增加。 运行完最高命令后,我看到MySQL使用的CPU是160%! 最近,我一直在优化表,并切换到持久连接。这会