👉️URL: https://www.kubecost.com/
📝Description:
Kubeccost 爲使用 Kubernetes 的團隊提供實時成本可視化和洞察,幫助您持續降低雲成本。
昨天瀏覽 Kubectl 插件的時候發現了 Kubecost,一看驚爲天人啊,這個功能對於運營團隊和 PM 團隊領導來說太重要了。直接把監控數據換算成錢,而且明確告訴你錢花在哪個 namespace、哪個應用、哪個標籤、哪個 deployment下,明確告訴你那些錢花得值、哪些錢浪費了,有哪些辦法可以減少浪費… 真的都是實打實的「降本」功能。
下面詳細介紹一下。
亮點:監控和降低雲成本
Kubeccost 爲使用 Kubernetes 的團隊提供實時成本可視化和洞察,幫助您持續降低雲成本。
產品功能
💰️ 成本分攤
按 Kubernetes 概念劃分成本,包括部署(Deployment)、服務(Service)、命名空間(Namespace)、標籤(Label)等等。開銷視圖可以跨越單個視圖中的多個集羣或通過單個 API 端點。
📺 統一成本監控
將 Kubernetes 的成本與任何外部雲服務或基礎設施的支出結合起來,就可以獲得一個完整的圖景。可以分攤外部成本,然後歸因於任何Kubernetes 概念,以實現綜合支出。
⚖️ 成本優化方案
在不犧牲績效的前提下接受動態的建議。優先考慮關鍵基礎設施或應用程序更改,以提高資源效率和可靠性。
🔔 開銷警報和治理
alerts: # Kubecost 產生關於羣集數據的警報
# 在命名空間 `kubecost` 的每日預算警報
- type: budget # 支持: 預算, recurringUpdate, 等.
threshold: 50 # 預算警報所需
window: daily # 或 1d
aggregation: namespace
filter: kubecost
在成本超支和基礎設施中斷風險成爲實時通知問題之前,迅速捕捉它們。通過集成像 PagerDuty 和 Slack 這樣的工具來保留工程工作流。
而且可以運行在以下環境:
- Azure
- AWS
- Google Cloud
- 內網環境
- Kubernetes
- 本地部署
安裝
可以使用 Helm Chart 進行安裝。
![[K8S 實用工具之四 - kubectl 實用插件#cost https github com kubecost kubectl-cost]]
安裝見這裏:《K8S 實用工具之四 - kubectl 實用插件:cost》
部署完成後,訪問 kubecost-cost-analyzer 的 9090 端口即可查看 UI,Ingress 方式或者 port-forward 都可以。
kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090
升級
helm repo update && helm upgrade kubecost kubecost/cost-analyzer -n kubecost
卸載
也是 Helm:
helm uninstall kubecost -n kubecost
🤑 實際效果展示
以我的集羣爲例,這展示的不是 UI,這展示的是白花花銀子、綠油油的美元 💵 啊!
Kubecost 有以下幾大菜單項,各個都是省錢能手。
- 🏠️ Overview(總覽)
- 📊 Cost Allocation(成本分攤)
- 🧰 資產
- 💲 節流
- 🛑 健康狀態
- 📃 報告
- 🔔 開銷警報
總覽
通過 port-forward 方式,訪問 http://localhost:9090
,首先的頁面平平無奇:
Kubecost 第一屏:Cluster 集羣 #1, 5 個節點,每月開銷 138.39 美元。
點進去後,真正的大殺器來了:
左上角:識別到 5 條省錢小妙招,每月可以幫我節省 $93.64。🤑
右上角:每月開銷 $138.39,成本效益 2.7%,97.3% 都讓雲廠商白嫖啦 😱
-
左下角:每月集羣開銷,基於資源價格的每月運行費率費用走勢圖,這裏還可以拆分到:
-
計算:
-
內存
-
存儲
此外!點擊右側「CLUSTER METRICS」還可以直接跳轉到我們熟悉的 Grafana 儀表板,查看監控指標和 💵 的具體聯繫。(下一篇再補充)
-
-
右下角:資源浪費率(🙊資源利用率),基於當前已購的資源和過去 7 天的用量
- 計算:每月空跑 $105.10 😱
- 內存:每月空跑 $20.51 😱
- 存儲:每月空跑 $9.10 😱
- 刨去空跑,我的應用主要的消耗在內存的
1.53
Overview 繼續下拉,還是震驚:
- 左上角:基於 Controller 維度的成本分攤,根據過去 2 天的資源消耗,算出 Controller 的每月分攤成本,比如我的:
-
kubecost/deployment:kubecost-cost-analyzer
成本佔比 $8.37 (17.1%) -
monitoring/statefulset:prometheus-prometheus-operator-prometheus
成本佔比 $5.83(11.9%) -
monitoring/statefulset:alertmanager-prometheus-operator-alertmanager
: 成本佔比 $2.81(5.7%)
-
- 右上角:基於 Service 維度的成本分攤,根據過去 2 天的資源消耗,算出 Service 的每月分攤成本,比如我的:
-
kubecost/kubecost-cost-analyzer
成本佔比 $8.37 (17.1%) - …
-
- 左下角:基於 NameSpace 維度的成本分攤,以及成本效益評分(1-100分),比如我的:
- kubecost:每月開銷 $10.74,效益 22 分,不及格!😱
- monitoring:每月開銷 $9.63,效益 42 分,不及格!😱
- crossplane-system:每月開銷 $5.70,效益 5 分,戰五渣! 😱
- kube-system:每月開銷 $2.71, 效益 17 分,不及格!😱
- loki-stack:每月開銷 $0.66,滿分!(Loki YYDS ?)💯
- 右下角:基礎架構健康度,94 分(集羣運行狀況評級是對基礎設施可靠性和性能風險的評估,分數範圍從1-100),屬於花錢保平安了這是。😂
ℹ️ 提示:
成本效益定義爲 CPU 和 RAM 的(使用量 / request)。如果使用了資源,但沒有 request 資源,那麼效率被認爲是無限的。
成本分攤
進入第二個菜單,成本分攤,效果如下:
細粒度到:CPU、GPU、RAM、PV、Network、LB、Shared。
另外,成本效益可以根據非常多的維度去進行分析,我想應該可以滿足領導的需求:
資產
ℹ️ 提示:
資產和公有云的信息對接後,可以獲得更豐富的信息,如:雲賬號、供應商類型等。
目前版本可以對接:AWS 和 GCP,但是是付費功能。
下圖爲資產信息:
也可以從多個維度拆分:
懸停到信息按鈕,會告訴你計費單位:(計費單價可調整的)。如下圖:
- 每小時 Node 開銷爲:$0.03733。
節流
如下圖,可以評估每月大概能省多少錢,節省的比例。以及具體的節流措施:
- 管理低利用率節點
- 本地磁盤利用率低
- Pod 配置的 Request 太多
- 識別到潛在的不用的 wordload
健康狀態
這個功能比較一般,就是類似 K9S 的 popeye。效果如下圖:
- 有 Pod pending
- Worker node 沒有分散在多個可用區(這個提示不錯👍️)
- 集羣沒有 master 副本
點進去還會有詳細的指南,如下圖:
報告
報告就是基於 成本 和 資產兩個維度,根據上面的儀表來定製定期的報告。
成本警報
成本警報就是告警,主要的區別是基於💵的維度:
- 反覆出現類
- 成本效益類
- 預算類
- 開銷變化類(如上文產品功能中的告警就是開銷突然上升了 50%)
- 健康類
- 診斷類
設置
定製化還挺全面的,說一些我認爲實用的配置吧:
- 配置 Label,比如:租戶對應的 Label 是 Tenant,部門對應的 Label 是 Apartment,產品對應的 Label 是 app…
- 價格類設置,可以設置:
- 折扣
- 共享開銷比例、對應的 NS、Label 等
- 單價
- 貨幣
總結
完整看下來,如果讓運營團隊和 PM 團隊領導看到,一定會愛不釋手的。🤑🤑🤑
三人行, 必有我師; 知識共享, 天下爲公. 本文由東風微鳴技術博客 EWhisper.cn 編寫.