代码之家  ›  专栏  ›  技术社区  ›  injoy

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

  •  2
  • injoy  · 技术社区  · 6 年前

    3 回复  |  直到 6 年前
        1
  •  3
  •   Rico    6 年前

    对。你可以用

    $ 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和内存列上的所有条目相加。

    kubectl top 为了工作你需要 metrics-server 适当设置和配置。(旧的集群使用 heapster )

        2
  •  0
  •   Black_Bacardi Vit    6 年前

    谢谢你,里科,答案很好,但只是一个补充:

    您可以指定资源配额,然后按指定的方式查看它们 here . 除此之外,还有像普罗米修斯这样的外部监控工具。另外,还有一个 Resource Explorer 它可以:

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

    列出集群中pods的资源QoS分配。灵感来源:

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

    GitHub ,但似乎最终会有一些变化,因为其中一个贡献者表示,有一个计划要删除 kubectl top 并使用一些本机解决方案,所以我建议遵循这个思路。

        3
  •  0
  •   P Ekambaram    6 年前

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

    推荐文章