我有一个在同一个k8s集群下创建的命名空间列表,我想了解每个命名空间的资源(CPU,内存)使用情况。有什么命令可以使用吗?
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)
kubectl top
jmo0nnb32#
编写一个shell脚本来获取集群中的所有命名空间。遍历每个命名空间。运行kubectl top pod。将命名空间中所有pod的cpu和内存相加。
cigdeys33#
感谢Rico,答案是好的,但只是作为一个补充:您可以指定资源配额,然后按此处指定的方式查看它们。除此之外,还有外部监视工具,如Prometheus。此外,还有Resource Explorer,它可以:从StackDriver显示历史统计资源使用情况。https://github.com/kubernetes/kubernetes/issues/55046列出集群中单元的资源QoS分配。灵感来自:https://github.com/kubernetes/kubernetes/issues/1751这个案例在GitHub上仍然是开放的,但是似乎最终应该有一些改变,因为一个贡献者说有一个计划要删除kubectl top并使用一些本地解决方案,所以我建议遵循这个线程。
3条答案
按热度按时间lsmepo6l1#
是的。您可以使用
例如:
如果要计算总数,需要将CPU和MEMORY列中的所有条目相加。
请注意,要使
kubectl top
正常工作,您需要对metrics-server进行适当的设置和配置。(较早的集群使用heapster)jmo0nnb32#
编写一个shell脚本来获取集群中的所有命名空间。遍历每个命名空间。运行kubectl top pod。将命名空间中所有pod的cpu和内存相加。
cigdeys33#
感谢Rico,答案是好的,但只是作为一个补充:
您可以指定资源配额,然后按此处指定的方式查看它们。除此之外,还有外部监视工具,如Prometheus。此外,还有Resource Explorer,它可以:
从StackDriver显示历史统计资源使用情况。
https://github.com/kubernetes/kubernetes/issues/55046
列出集群中单元的资源QoS分配。灵感来自:
https://github.com/kubernetes/kubernetes/issues/1751
这个案例在GitHub上仍然是开放的,但是似乎最终应该有一些改变,因为一个贡献者说有一个计划要删除
kubectl top
并使用一些本地解决方案,所以我建议遵循这个线程。