使用 Kube-capacity CLI 檢視 Kubernetes 資源請求、限制和利用率
關 注 微 信 公 眾 號 《 雲 原 生 C T O 》 更 多 雲 原 生 幹 貨 等 你 來 探 索
專 注 於 雲原生技術
分 享
提 供 優 質 雲原生開發
視 頻 技 術 培 訓
面試技巧
, 及 技術疑難問題
解答
雲 原 生 技 術 分 享 不 僅 僅 局 限 於 Go
、 Rust
、 Python
、 Istio
、 containerd
、 CoreDNS
、 Envoy
、 etcd
、 Fluentd
、 Harbor
、 Helm
、 Jaeger
、 Kubernetes
、 Open Policy Agent
、 Prometheus
、 Rook
、 TiKV
、 TUF
、 Vitess
、 Arg
o
、 Buildpacks
、 CloudEvents
、 CNI
、 Contour
、 Cortex
、 CRI-O
、 Falco
、 Flux
、 gRPC
、 KubeEdge
、 Linkerd
、 NATS
、 Notary
、 OpenTracing
、 Operator
Framework
、 SPIFFE
、 SPIRE
和 Thanos
等
使用 Kube-capacity CLI 檢視 Kubernetes 資源請求、限制和利用率
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
釋出頁面上訪問。
http://github.com/goreleaser/goreleaser
http://github.com/robscott/kube-capacity/releases
Homebrew
這個專案可以用 Homebrew
安裝:
brew tap robscott/tap brew install robscott/tap/kube-capacity
Krew
這個專案可以用 Krew
安裝:
kubectl krew install resource-capacity
用法
預設情況下, kube-capacity
將輸出一個節點列表,其中包含 CPU
和記憶體資源請求的總數以及在它們上執行的所有 pod
的限制。對於具有多個節點的叢集,第一行還將包括叢集範圍的總數。該輸出將如下所示:
包括 Pod
對於更詳細的輸出, kube-capacity
可以在輸出中包含 pod
。當 -p
或 --pods
被傳遞給 kube-capacity
時,它將包含如下所示的特定於 pod
的輸出
包括利用率
為了幫助瞭解資源利用率與配置的請求和限制的比較, kube-capacity
可以在輸出中包含利用率指標。請務必注意,此輸出依賴於叢集中的 metrics-server
正常執行。當 -u
或 --util
被傳遞給 kube-capacity
時,它將包含如下所示的資源利用率資訊:
包括 Pod 和利用率
對於更詳細的輸出, kube-capacity
可以在輸出中包含 pod
和資源利用率。當 --util
和 --pods
傳遞給 kube-capacity
時,它將產生如下所示的寬輸出:
值得注意的是,來自 pod
的利用率數字可能不會與總節點利用率相加。與節點和叢集級別數字代表 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
JSON 和 YAML 輸出
預設情況下, kube-capacity
將以表格格式提供輸出。要以 JSON
或 YAML
格式檢視此資料,可以使用輸出標誌。以下是一些示例命令:
kube-capacity --pods --output json kube-capacity --pods --containers --util --output yaml
支援的標誌
先決條件
任何請求叢集利用率的命令都依賴於叢集上執行的 metrics-server
。如果尚未安裝,您可以使用官方 helm chart
進行安裝。
http://github.com/helm/charts/tree/master/stable/metrics-server
http://github.com/kubernetes-incubator/metrics-server
- Go 中的構建器模式
- 讓我們使用 Go 實現基本的服務發現
- 雲原生下一步的發展方向是什麼?
- 用更雲原生的方式做診斷|大規模 K8s 叢集診斷利器深度解析
- 多個維度分析k8s多叢集管理工具,到底哪個才真正適合你
- 使用 Kube-capacity CLI 檢視 Kubernetes 資源請求、限制和利用率
- 使用 Go 在 Kubernetes 中構建自己的准入控制器
- 雲原生數倉如何破解大規模叢集的關聯查詢效能問題?
- 雲原生趨勢下的遷移與災備思考
- 2022 年不容錯過的六大雲原生趨勢!
- 使用 Prometheus 監控 Golang 應用程式
- 雲原生時代下的機遇與挑戰 DevOps如何破局
- 如何在雲原生格局中理解Kubernetes合規性和安全框架
- 設計雲原生應用程式的15條基本原則
- 使用 Operator SDK 為 Pod 標籤編寫Controller
- Kubernetes Visitor 模式
- 為什麼雲原生是第二次雲革命
- 構建雲原生安全的六個重要能力
- 擴充套件雲原生策略的步驟有哪些?
- 七個值得關注的開源雲原生工具