使用Kube-capacityCLI查看Kubernetes资源请求、限制和使用情况。Kube-capacity是一个简单但功能强大的CLI,它提供了Kubernetes集群中资源请求、限制和利用率的概览。它将kubectltop输出的最佳部分组合到kubectldescribe中,在一个易于使用的CLI中,专注于集群资源。但是像这样的工具真的很容易使用。比如我想查看这个kube-system下有哪些pod设置了request和limit,其实需要输入很长的命令才能列出来,还需要一些debug,看起来不是特别方便。#kubectlgetpod-nkube-system-o=custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace,PHASE:.status.phase,Request-cpu:.spec.containers\[0\].resources.requests.cpu,Request-memory:.spec.containers\[0\].resources.requests.memory,Limit-cpu:.spec.containers\[0\].resources.limits.cpu,Limit-memory:.spec.containers\[0\].resources.limits.memoryNAMENAMESPACEPHASERequest-cpuRequest-memoryLimit-cpuLimit-memorycalico-kube-controllers-7d4c6544cc-g6x6qkube-systemRunning<无><无><无>calico-node-4fjn8kube-system运行250mcalico-node-7nbpjkube-system运行250mcalico-node-qvdlrkube-system跑步250mcoredns-7977f69688-4nz9qkube-system运行100m70Mi170Micoredns-7977f69688-frkt5kube-system运行100m70Mi170Mietcd-k8s-master1kube-system运行100m10etcd-k8s-master2kube-system运行100m100Mietcd-k8s-master3kube-system运行100m100Mikube-apiserver-k8s-master1kube-system运行250m那么这个工具真正解决的是帮助我们快速查看和概览整个集群和pod的资源配置。安装Go二进制文件由GoReleaser自动构建每个版本。这些可以在项目的GitHub发布页面上访问。https://github.com/goreleaser/goreleaserhttps://github.com/robscott/kube-capacity/releasesHomebrew这个项目可以用Homebrew安装:brewtaprobscott/tapbrewinstallrobscott/tap/kube-capacityKrew这个项目可以使用Krew安装:kubectlkrewinstallresource-capacity用法默认情况下,kube-capacity将输出一个节点列表,其中包含CPU和内存资源请求的总数以及运行在这些节点上的所有pod的限制。对于具有多个节点的集群,第一行还将包括集群范围的总数。输出将如下所示:IncludePods对于更详细的输出,kube-capacity可以在输出中包含pod。当-p或--pods传递给kube-capacity时,它将包含特定于pod的输出,如下所示,包括利用率。为了帮助了解资源利用率与配置的请求和限制的比较情况,可以在输出包括利用率指标中找到kube-capacity。请务必注意,此输出依赖于集群中的指标服务器才能正常运行。当-u或--util传递给kube-capacity时,它将包含资源利用率信息,如下所示:includepodandutilization对于更详细的输出,kube-capacity可以在输出Rate中包含pod和资源利用率。当--util和--pods传递给kube-capacity时,它会产生如下所示的宽输出:值得注意的是,来自pod的利用率数字可能不等于总节点利用率。与节点和集群级别数字表示pod值总和的请求和限制数字不同,节点指标直接来自指标服务器,并且可能包括其他形式的资源利用率。排序要突出显示具有最高指标的节点、pod和容器,您可以按各种列排序:showpodcount要显示每个节点和整个集群的pod数量,您可以传递--pod-count参数:filterbylabel对于更高级的用法,kube-capacity还支持按pod、名称空间和/或节点标签进行过滤。以下示例显示了如何使用这些过滤器:kube-capacity--pod-labelsapp=nginxkube-capacity--namespacedefaultkube-capacity--namespace-labelsteam=apikube-capacity--node-labelskubernetes.io/role=nodeJSON和YAML输出默认情况下,kube-capacity将提供表格格式的输出。要以JSON或YAML格式查看此数据,可以使用输出标志。以下是一些示例命令:kube-capacity--pods--outputjsonkube-capacity--pods--containers--util--outputyamlsupportedflagsprerequisites任何请求集群利用率的命令都取决于metrics-server。如果没有安装,可以使用官方的helmchart安装。https://github.com/helm/charts/tree/master/stable/metrics-serverhttps://github.com/kubernetes-incubator/metrics-server