【发布时间】:2019-06-17 16:33:30
【问题描述】:
我有一个在同一个 k8s 集群下创建的命名空间列表,我想了解每个命名空间的资源(CPU、内存)使用情况。有什么可以使用的命令吗?
【问题讨论】:
标签: kubernetes kubectl
我有一个在同一个 k8s 集群下创建的命名空间列表,我想了解每个命名空间的资源(CPU、内存)使用情况。有什么可以使用的命令吗?
【问题讨论】:
标签: kubernetes kubectl
是的。你可以使用
$ 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)
【讨论】:
感谢 Rico,答案很好,但只是作为补充:
您可以指定资源配额,然后按照指定的here 查看它们。 除此之外,还有像 Prometheus 这样的外部监控工具。此外,还有一个Resource Explorer 可以:
显示来自 StackDriver 的历史统计资源使用情况。
https://github.com/kubernetes/kubernetes/issues/55046
列出集群中 pod 的资源 QoS 分配。灵感来源:
该案例仍在GitHub 上开放,但似乎最终应该会有一些变化,因为其中一位贡献者表示计划删除kubectl top 并使用一些本地解决方案,所以我建议关注这个线程。
【讨论】:
编写一个 shell 脚本来获取集群中的所有命名空间。遍历每个命名空间。运行 kubectl top pod。 将命名空间中所有 pod 的 CPU 和内存相加。
【讨论】: