使用開源工具監控 Kubernetes 云成本
Kubernetes 是一個強大的平臺,用于管理云中的動態容器化應用,但可能很難理解成本發生在哪里。管理 Kubernetes 資源的成本效率可能是一個挑戰。這就是 OpenCost 的用武之地。OpenCost 是一種云成本監控工具,與 Kubernetes 無縫集成,讓你可以實時跟蹤云支出,以便相應地優化資源。
OpenCost 是一個開源 CNCF 沙盒項目 和 規范,用于實時監控與 Kubernetes 部署相關的云成本。該規范按服務、部署、命名空間、標簽等對當前和歷史 Kubernetes 云支出和資源分配進行建模。這些數據對于理解和優化 Kubernetes 從應用到基礎設施的成本和性能至關重要。
要求和安裝
開始使用 OpenCost 是一個相對簡單的過程。OpenCost 使用 Prometheus 進行監控和指標存儲。你可以從 Prometheus 社區的 Kubernetes Helm Chart 安裝它。
安裝 Prometheus
首先使用以下命令安裝 Prometheus:
$ helm install my-prometheus --repo https://prometheus-community.github.io/helm-charts prometheus \
--namespace prometheus --create-namespace \
--set pushgateway.enabled=false --set alertmanager.enabled=false -f \
https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/prometheus/extraScrapeConfigs.yaml
安裝 OpenCost
接下來,使用 kubectl
命令安裝 OpenCost:
$ kubectl apply --namespace opencost -f \
https://raw.githubusercontent.com/opencost/opencost/develop/kubernetes/opencost.yaml
此命令將 OpenCost 部署到你的集群并開始收集數據。這就是大多數安裝所需的全部內容。你可以使用你自己的 Prometheus 安裝或使用 OpenCost Helm Chart 自定義部署。
測試和訪問
OpenCost 會自動檢測它是否在 AWS、Azure 還是 GCP 上運行,你可以將其配置為為本地 Kubernetes 部署提供定價。首先轉發 API 和 UI 訪問的端口:
$ kubectl port-forward --namespace opencost service/opencost 9003 9090
大約五分鐘內,你可以驗證 UI 和服務器是否正在運行,并且你可以通過 http://localhost:9090
監控成本
你已準備好開始使用部署到 Kubernetes 集群的 OpenCost 來監控云成本。OpenCost 儀表板提供對云支出的實時可見性,使你能夠識別成本異常并優化云資源。你可以按節點、命名空間、pod、標簽等查看云支出。
OpenCost monitoring console
kubectl cost 插件提供了對 Kubernetes 成本分配指標的簡單 CLI 查詢。它允許開發人員、運營商和其他人快速確定任何 Kubernetes 工作負載的成本和效率。
$ kubectl cost --service-port 9003 \
--service-name opencost --kubecost-namespace opencost \
--allocation-path /allocation/compute pod \
--window 5m --show-efficiency=true
+-------+---------+-------------+----------+---------------+
|CLUSTER|NAMESPACE|POD |MONTH RATE|COST EFFICIENCY|
+-------+---------+-------------+----------+---------------+
|cl-one |kube-syst|coredns-db...| 1.486732 | 0.033660 |
| | |coredns-...dm| 1.486732 | 0.032272 |
| | |kube-prox...7| 1.359577 | 0.002200 |
| | |kube-prox...x| 1.359577 | 0.002470 |
| |opencost |opencost...5t| 0.459713 | 0.187180 |
| |kube-syst|aws-node-cbwl| 0.342340 | 0.134960 |
| | |aws-node-gbfh| 0.342340 | 0.133760 |
| |prometheu|my-prome...pv| 0.000000 | 0.000000 |
| | |my-prome...hn| 0.000000 | 0.000000 |
| | |my-prome...89| 0.000000 | 0.000000 |
+-------+---------+-------------+----------+---------------+
| SUMMED| | | 6.837011 | |
+-------+---------+-------------+----------+---------------+
你還可以集成 API,以編程方式將數據提取到你選擇的平臺中。
Kubernetes 優化策略
現在你已經掌握了云成本,是時候優化你的 Kubernetes 環境了。優化是一個迭代過程。從棧的頂部(容器)開始并遍歷每一層。每一步的效率都會復合。有很多方法可以優化 Kubernetes 以提高成本效率,例如:
- 查找廢棄的工作負載和未申明的卷:不再使用或斷開連接的容器莢和存儲會繼續消耗資源而不提供價值。
- 調整你的工作負載大?。捍_保你為你的工作負載使用正確大小的容器。調查分配過多和分配不足的容器。
- 自動擴展:自動擴展可以幫助你僅在需要時使用資源來節省成本。
- 調整集群大?。汗濣c過多或過大可能會導致效率低下。在容量、可用性和性能之間找到適當的平衡可能會大大降低成本。
- 研究更便宜的節點類型:CPU、RAM、網絡和存儲有很多變化。切換到 ARM 架構可能會帶來更大的節省。
- 投資 FinOps 團隊:組織內的專門團隊可以通過協調預留實例、現貨實例和節省計劃來尋找實現更大節省的方法。
從今天開始
監控 Kubernetes 環境中的成本可能具有挑戰性,但使用 OpenCost 則不必如此。要開始使用 OpenCost 并控制你的云支出,請訪問 OpenCost 網站,在 GitHub 中獲取代碼,查看 OpenCost 文檔,并參與 CNCF Slack 中的 #opencost 頻道。