4

Kube-Capacity: 一款超实用的 Kubernetes 资源使用量终端管理工具

 1 year ago
source link: https://os.51cto.com/article/712910.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一款超实用的 Kubernetes 资源使用量终端管理工具-51CTO.COM

Kube-Capacity: 一款超实用的 Kubernetes 资源使用量终端管理工具
作者:charts 2022-07-01 10:53:05
Kube-capacity 是一个简单而强大的 CLI,它提供了Kubernetes集群中资源请求、限制和利用率的概览。它将输出的最佳部分结合kubectl top到kubectl describe一个易于使用的集中于集群资源的 CLI 中。
471ea9613f7dc9a67af620ba02773dcebec142.jpg

使用 Kube-capacity CLI 查看 Kubernetes 资源请求、限制和利用率。

Kube-capacity 是一个简单而强大的 CLI,它提供了Kubernetes集群中资源请求、限制和利用率的概览。它将输出的最佳部分结合kubectl top到kubectl describe一个易于使用的集中于集群资源的 CLI 中。

35679a235fbdfc3c2b6851bd91a7bf7c6f8548.jpg

不过像这样的工具确实好用一些,比如我想看这个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

这个项目可以用Homebrew安装:

brew tap robscott/tap
brew install robscott/tap/kube-capacity

这个项目可以用Krew安装:

kubectl krew install resource-capacity

默认情况下,kube-capacity 将输出一个节点列表,其中包含 CPU 和内存资源请求的总数以及在它们上运行的所有 pod 的限制。对于具有多个节点的集群,第一行还将包括集群范围的总数。该输出将如下所示:

b42df7b191458698bad110318d64a5901b012f.jpg

包括 Pod

对于更详细的输出,kube-capacity 可以在输出中包含 pod。当-p或--pods被传递给 kube-capacity 时,它将包含如下所示的特定于 pod 的输出

13b971514a8603c550d48322a05863f02bb093.jpg

包括利用率

为了帮助了解资源利用率与配置的请求和限制的比较,kube-capacity 可以在输出中包含利用率指标。请务必注意,此输出依赖于集群中的metrics-server正常运行。当-u或--util被传递给 kube-capacity 时,它将包含如下所示的资源利用率信息:

8843ab26508196e5aab662b418221fa10db665.jpg

包括 Pod 和利用率

对于更详细的输出,kube-capacity 可以在输出中包含 pod 和资源利用率。当--util和--pods传递给 kube-capacity 时,它将产生如下所示的宽输出:

6217e5a585646cb4884132aa203a0a99ea349e.jpg

值得注意的是,来自 pod 的利用率数字可能不会与总节点利用率相加。与节点和集群级别数字代表 pod 值总和的请求和限制数字不同,节点指标直接来自指标服务器,并且可能包括其他形式的资源利用率。

要突出显示具有最高指标的节点、pod 和容器,您可以按各种列进行排序:

e62446912947195244e5443297453c64c51d10.jpg

显示 Pod 计数

要显示每个节点和整个集群的 pod 数量,可以通过--pod-count参数:

c31e90215539f2eba282251d1bc8f9c4c1be9a.jpg

按标签过滤

对于更高级的使用,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

JSON 和 YAML 输出

默认情况下,kube-capacity 将以表格格式提供输出。要以 JSON 或 YAML 格式查看此数据,可以使用输出标志。以下是一些示例命令:

kube-capacity --pods --output json
kube-capacity --pods --containers --util --output yaml

支持的标志

e6de1ee21dfb00dfc429697671ee29ea9ab740.jpg

任何请求集群利用率的命令都依赖于集群上运行的metrics-server。如果尚未安装,您可以使用官方helm chart进行安装。

  • https://github.com/helm/charts/tree/master/stable/metrics-server
  • https://github.com/kubernetes-incubator/metrics-server

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK