Kube-capacity
是一个简单而强大的 CLI
,它提供了Kubernetes
集群中资源请求、限制和利用率的概览。它将输出的最佳部分结合kubectl top
到kubectl describe
一个易于使用的集中于集群资源的 CLI
中。
不过像这样的工具确实好用一些,比如我想看这个kube-system
下有哪些pod
有没有设置request
和limit
的时候,实际上,我需要输入一段很长的命令才能列出,而且需要一些调试,这看起来不是特别方便
# kubectl get pod -n kube-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.memory
NAME NAMESPACE PHASE Request-cpu Request-memory Limit-cpu Limit-memory
calico-kube-controllers-7d4c6544cc-g6x6q kube-system Running <none> <none> <none> <none>
calico-node-4fjn8 kube-system Running 250m <none> <none> <none>
calico-node-7nbpj kube-system Running 250m <none> <none> <none>
calico-node-qvdlr kube-system Running 250m <none> <none> <none>
coredns-7977f69688-4nz9q kube-system Running 100m 70Mi <none> 170Mi
coredns-7977f69688-frkt5 kube-system Running 100m 70Mi <none> 170Mi
etcd-k8s-master1 kube-system Running 100m 100Mi <none> <none>
etcd-k8s-master2 kube-system Running 100m 100Mi <none> <none>
etcd-k8s-master3 kube-system Running 100m 100Mi <none> <none>
kube-apiserver-k8s-master1 kube-system Running 250m <none> <none> <none>
那么这个工具实际上解决的问题就是帮助我们快速查看概览整个集群和pod
的资源配置情况
Go
二进制文件由GoReleaser
随每个版本自动构建。这些可以在此项目的 GitHub
发布页面上访问。
https://github.com/goreleaser/goreleaser
https://github.com/robscott/kube-capacity/releases
这个项目可以用Homebrew
安装:
brew tap robscott/tap
brew install robscott/tap/kube-capacity
这个项目可以用Krew
安装:
kubectl krew install resource-capacity
默认情况下,kube-capacity
将输出一个节点列表,其中包含 CPU
和内存资源请求的总数以及在它们上运行的所有 pod
的限制。对于具有多个节点的集群,第一行还将包括集群范围的总数。该输出将如下所示:
对于更详细的输出,kube-capacity
可以在输出中包含 pod
。当-p
或--pods
被传递给 kube-capacity
时,它将包含如下所示的特定于 pod
的输出
为了帮助了解资源利用率与配置的请求和限制的比较,kube-capacity
可以在输出中包含利用率指标。请务必注意,此输出依赖于集群中的metrics-server
正常运行。当-u
或--util
被传递给 kube-capacity
时,它将包含如下所示的资源利用率信息:
对于更详细的输出,kube-capacity
可以在输出中包含 pod
和资源利用率。当--util
和--pods
传递给 kube-capacity
时,它将产生如下所示的宽输出:
值得注意的是,来自 pod
的利用率数字可能不会与总节点利用率相加。与节点和集群级别数字代表 pod
值总和的请求和限制数字不同,节点指标直接来自指标服务器,并且可能包括其他形式的资源利用率。
要突出显示具有最高指标的节点、pod
和容器,您可以按各种列进行排序:
要显示每个节点和整个集群的 pod
数量,可以通过--pod-count
参数:
对于更高级的使用,kube-capacity
还支持按 pod
、命名空间和/或节点标签进行过滤。以下示例展示了如何使用这些过滤器:
kube-capacity --pod-labels app=nginx
kube-capacity --namespace 默认
kube-capacity --namespace-labels team=api
kube-capacity --node-labels kubernetes.io/role=node
默认情况下,kube-capacity
将以表格格式提供输出。要以 JSON
或 YAML
格式查看此数据,可以使用输出标志。以下是一些示例命令:
kube-capacity --pods --output json
kube-capacity --pods --containers --util --output yaml
任何请求集群利用率的命令都依赖于集群上运行的metrics-server
。如果尚未安装,您可以使用官方helm chart
进行安装。
https://github.com/helm/charts/tree/master/stable/metrics-server
https://github.com/kubernetes-incubator/metrics-server
链接:https://mp.weixin.qq.com/s/PE5kTcB9aE0PrdXTohHAWA
(版权归原作者所有,侵删)
《Docker中Image、Container与Volume的迁移》
免责声明:本文内容来源于网络,所载内容仅供参考。转载仅为学习和交流之目的,如无意中侵犯您的合法权益,请及时联系Docker中文社区!