如何在k8s中转储每个命名空间的资源(CPU,内存)使用情况?

时间:2019-01-24 22:56:33

标签: kubernetes kubectl

我有一个在同一k8s集群下创建的名称空间列表,我想找出每个名称空间的资源(CPU,内存)使用情况。我可以使用任何命令吗?

3 个答案:

答案 0 :(得分:1)

是的。您可以使用

$ kubectl -n <nampespace> top pod

例如:

$ kubectl top pod -n kube-system
NAME                                                                 CPU(cores)   MEMORY(bytes)
calico-node-xxxxx                                                    17m          166Mi
coredns-xxxxxxxxxx-xxxxx                                             2m           11Mi
coredns-xxxxxxxxxx-xxxxx                                             3m           11Mi
etcd-ip-x-x-x-x.us-west-2.compute.internal                           19m          149Mi
kube-apiserver-ip-x-x-x-x.us-west-2.compute.internal                 39m          754Mi
kube-controller-manager-ip-x-x-x-x.us-west-2.compute.internal        20m          138Mi
kube-proxy-xxxxx                                                     5m           12Mi
kube-scheduler-ip-x-x-x-x.us-west-2.compute.internal                 6m           17Mi
metrics-server-xxxxxxxxxx-xxxxx                                      0m           15Mi

如果要总计,则需要将CPU和MEMORY列上的所有条目加起来。

请注意,要使kubectl top工作,您需要进行metrics-server的设置和配置。 (较早的群集使用heapster

答案 1 :(得分:0)

感谢Rico,答案很好,但又是补充:

您可以指定资源配额,然后按照指定的here进行查看。 除此之外,还有诸如Prometheus之类的外部监视工具。另外,有一个Resource Explorer可以:

  

显示StackDriver的历史统计资源使用情况。

     

https://github.com/kubernetes/kubernetes/issues/55046

     

列出到群集中Pod的资源QoS分配。受到启发:

     

https://github.com/kubernetes/kubernetes/issues/1751

此案仍在GitHub上审理,但似乎最终应该进行一些更改,因为其中一位撰稿人指出,计划删除kubectl top并使用某些本机解决方案,因此我建议跟随这个话题。

答案 2 :(得分:0)

编写一个shell脚本以获取集群中所有名称的进度。遍历每个名​​称空间。运行kubectl顶部吊舱。 在名称空间中添加所有吊舱的杯子和内存。