使用開源工具監控 Kubernetes 雲成本
OpenCost 是一款與 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 訪問 OpenCost UI。
監控成本
你已準備好開始使用部署到 Kubernetes 集群的 OpenCost 來監控雲成本。OpenCost 儀錶板提供對雲支出的實時可見性,使你能夠識別成本異常並優化雲資源。你可以按節點、命名空間、pod、標籤等查看雲支出。
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 以提高成本效率,例如:
- 查找廢棄的工作負載和未申明的卷:不再使用或斷開連接的容器莢和存儲會繼續消耗資源而不提供價值。
- 調整你的工作負載大小:確保你為你的工作負載使用正確大小的容器。調查分配過多和分配不足的容器。
- 自動擴展:自動擴展可以幫助你僅在需要時使用資源來節省成本。
- 調整集群大小:節點過多或過大可能會導致效率低下。在容量、可用性和性能之間找到適當的平衡可能會大大降低成本。
- 研究更便宜的節點類型:CPU、RAM、網路和存儲有很多變化。切換到 ARM 架構可能會帶來更大的節省。
- 投資 FinOps 團隊:組織內的專門團隊可以通過協調預留實例、現貨實例和節省計劃來尋找實現更大節省的方法。
從今天開始
監控 Kubernetes 環境中的成本可能具有挑戰性,但使用 OpenCost 則不必如此。要開始使用 OpenCost 並控制你的雲支出,請訪問 OpenCost 網站,在 GitHub 中獲取代碼,查看 OpenCost 文檔,並參與 CNCF Slack 中的 #opencost 頻道。
(題圖:MJ/5de557f1-464c-480c-8698-130748f60b20)
via: https://opensource.com/article/23/3/kubernetes-cloud-cost-monitoring
作者:Matt Ray 選題:lkxed 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive