看得見的成本!1款工具實現K8S資源成本監控視覺化
阿新 • • 發佈:2020-11-11
> 本文來自[Rancher Labs](https://mp.weixin.qq.com/s/Faygw0CJY1mJ5i_oYo9bEw "Rancher Labs")
>
>關注我們,第一時間獲取技術乾貨
## 計算Kubernetes成本的複雜性
採用Kubernetes和基於服務的架構可以為企業帶來諸多好處,如團隊可以更快地遷移以及應用程式可以更輕鬆地擴充套件等。但是這一轉變也帶來了一些複雜性,比如雲成本的可見性。這是由於應用程式及其資源需求常常是動態變化的,並且團隊共享核心資源而沒有與工作負載掛鉤的透明價格。此外,能夠充分意識到Kubernetes所帶來的優勢的企業通常會將資源執行在不同型別的機器上,甚至會執行在多個雲提供程式上。
在本文中,我們將瞭解在企業中為showback/chargeback專案實現成本監控的最佳實踐和不同實現方式,以及如何授權使用者對這些資訊採取行動。我們首先會了解Kubecost,它提供了一種開源的方式來確保跨所有Kubernetes工作負載一致和準確的可見性。
![](https://oscimg.oschina.net/oscnet/up-838e4b61e7d60f228d50867306eb619de1d.JPEG)
讓我們進一步瞭解最佳實踐,以準確分配和監控Kubernetes的工作負載成本以及相關託管服務上的支出。
## 成本分配
精確分配資源成本是在Kubernetes環境中建立成本可見性和實現高效成本利用的首要步驟。
要正確進行這一步驟,你需要在工作負載層面通過單個容器進行成本分配。工作負載分配完成後,通過彙總不同的工作負載集合,成本可以正確地分配給各個團隊、部門甚至個人開發者。在工作負載層面的成本分配框架如下所示:
![](https://oscimg.oschina.net/oscnet/up-a53bfedbbee6c6e0cf6bc062ff9f36921d9.JPEG)
讓我們一點點拆解這個框架。
資源消耗的平均數量由Kubernetes scheduler進行計算或者由雲提供程式提供,這取決於被測量的特定資源。我們建議根據request和usage的最大值來計算記憶體和CPU分配。這樣就能夠反映出由Kubernetes scheduler本身所預留的資源量。另一方面,諸如負載均衡器和持久卷等資源會嚴格基於由提供程式所提供的數量。
Kubernetes API可以直接計算出資源消耗的時間段。這由資源(如記憶體、CPU和GPU等)在Running狀態所消耗的時間決定。要讓資料對雲chargeback來說足夠精確,我們建議團隊將這些資料與雲提供程式提供的特定雲資源(如節點)所花費的時間進行協調,保持一致。在之後的部分我們將對此進行更多介紹。
資源價格是通過觀察環境中每種特定資源的成本來確定的。例如,us-east-1 AWS區域中m5.xlarge spot例項的CPU小時價格與同一例項的按需價格不同。
使用這一框架可以在各個工作負載之間適當分配成本,那麼它們就可以通過任何Kubernetes概念(如名稱空間、標籤、註釋或controller)輕鬆聚合。
## Kubernetes成本監控
通過Kubernetes概念(如pod或controller)分配的成本,你可以開始準確地將支出對映到任何內部業務層級,如團隊、產品、部門或成本中心。企業通常的做法是通過Kubernetes名稱空間來劃分團隊工作負載,而其他的做法可能使用Kubernetes標籤或註釋來識別工作負載屬於哪個團隊。
在不同應用、團隊等之間進行成本監控的另一個關鍵因素是確定誰應該為閒置的容量付費。具體而言是指仍在向企業計費但未使用的叢集資源。通常情況下,這些費用要麼計入中央基礎設施成本中心,要麼按比例分配給應用團隊。將這些成本分配給負責供應決策的團隊,通過調整激勵措施來擁有一個高效規模的叢集,從而產生積極的效果。
## 核對雲賬單
Kubernetes提供了大量實時資料。這讓開發人員可以直接訪問成本指標。儘管這些實時資料通常都是精確的,但它可能與雲提供商的計費資料不完全一致。例如,在確定AWS spot節點的小時費率時,使用者需要等待Spot資料來源或成本和使用報告來確定準確的費率。出於計費和收費的目的,你應該將資料與實際賬單進行核對。
![](https://oscimg.oschina.net/oscnet/up-595a288193a54d724a6fc8bbb17ab1d4da2.JPEG)
## 通過Kubecost獲得更好的可見性和治理
我們已經瞭解瞭如何觀察資料以計算Kubernetes工作負載的成本。還有另一個方法是利用Kubecost,這是一個建立在開源基礎上的成本和容量管理解決方案,提供了對整個Kubernetes環境的可見性。Kubecost為Kubernetes工作負載以及它們所消耗的相關管理服務(如S3或RDS)提供成本可見性和洞察力。該產品收集Kubernetes的實時資料,還能與你的雲計費資料進行核對,以反映你支付的實際價格。
![](https://oscimg.oschina.net/oscnet/up-481665abd2fc405a08ea7e51951a69c5d0f.JPEG)
有了像Kubecost這樣的解決方案,你可以授權應用工程師做出明智的實時決策,並開始實施即時和長期的實踐,以優化和治理雲支出。這包括在不影響效能的情況下采用成本優化的方案、實施Kubernetes預算和告警、showback/chargeback專案甚至基於成本的自動化。
Kubecost社群版可以免費使用,並且具有上述所有功能。你可以在Rancher應用商店中找到Kubecost Helm chart,輕鬆完成部署。藉助Rancher,你可以獲得Kubernetes叢集視覺化和絕佳控制力的體驗,與此同時Kubecost為你提供了對支出和如何優化成本的直接觀察。它們共同為使用Kubernetes的團隊提供了一個完成的成本管理解決