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

eh57zj3b  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(3)|浏览(289)

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

lsmepo6l

lsmepo6l1#

是的。您可以使用

$ 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

jmo0nnb3

jmo0nnb32#

编写一个shell脚本来获取集群中的所有命名空间。遍历每个命名空间。运行kubectl top pod。将命名空间中所有pod的cpu和内存相加。

cigdeys3

cigdeys33#

感谢Rico,答案是好的,但只是作为一个补充:
您可以指定资源配额,然后按此处指定的方式查看它们。除此之外,还有外部监视工具,如Prometheus。此外,还有Resource Explorer,它可以:
从StackDriver显示历史统计资源使用情况。
https://github.com/kubernetes/kubernetes/issues/55046
列出集群中单元的资源QoS分配。灵感来自:
https://github.com/kubernetes/kubernetes/issues/1751
这个案例在GitHub上仍然是开放的,但是似乎最终应该有一些改变,因为一个贡献者说有一个计划要删除kubectl top并使用一些本地解决方案,所以我建议遵循这个线程。

相关问题