6個最佳化策略,助你降低K8S成本
Kubernetes 早已成為容器編排引擎的事實標準,而隨著 Kubernetes 環境的複雜性持續增長,成本也在不斷攀升。CNCF 釋出的調查報告《Kubernetes 的 FinOps》顯示,
68%的受訪者表示 Kubernetes 開銷正在上漲,並且一半的人所在的組織經歷了每年超過20%的開銷增長。
因此,Kubernetes 成本管理和最佳化亟需得到系統管理員的重視。本文我們將瞭解6個最佳化 Kubernetes 成本的策略和方法。
1、合理調整 Pod 和節點
降低成本最簡單的方式之一是管理 Pod 和節點使用的資源。儘管通常的建議是留有足夠的機動空間,但
過度配置或允許應用程式無限制地使用資源會帶來災難性的後果。例如,假設一個Pod由於應用程式的錯誤而消耗了節點的所有可用記憶體,不必要地利用了資源,這會導致其他 Pod 完全沒有資源可用。
為避免這一情況的發生,使用者可以在名稱空間級別用 Kubernetes 資源配額和限制區間來限制資源利用率。此外,還可以在容器層面上指定資源請求和限制,強制執行容器可以請求多少資源以及資源的最大限制。
節點的大小取決於 Pod 所使用的資源。如果你的工作負載只利用了節點中50%的資源,並且短期內資源使用量不會激增,那麼使用者可以適當縮小節點的規模以降低成本。
另一個考慮因素是調整在單個節點上可以執行的 Pod 數量。
即便在沒有硬性限制的情況下,在單個節點上執行大量的 Pod 也會導致資源利用效率低下。鑑於這類情況,一部分K8S的託管服務提供商已經限制了單個節點上可以執行 Pod 的數量。
2、監控叢集和基礎設施
合理監控叢集環境,包括底層或依賴項資源,有助於管理成本。無論你是使用託管的 Kubernetes 叢集還是自建的叢集,監控資源利用率和總體成本都是降低成本的第一步,這能夠讓使用者一目瞭然地瞭解計算、儲存、網路利用率等情況,以及成本在它們之間的分佈情況。
雲廠商通常能夠提供內建工具和基本的監控功能。而利用 Prometheus、Kubecost 等工具可以讓使用者獲得更為全面的洞察。近日釋出的應用統一部署與管理平臺 Seal AppManager 中也內建了成本管理檢視,提供 Kubernetes 的資源開銷、共享費用(如空閒費用、管理費用)的成本彙算和分攤,並內建多維度成本分析檢視為使用者提供成本洞察。另外,使用者也可以依據叢集、專案、應用等維度自定義成本檢視。
3、配置彈性伸縮
Kubernetes 支援3類彈性伸縮:
- HPA:自動水平伸縮
- VPA:垂直自動伸縮
- 叢集自動伸縮
自動充分利用 Kubernetes 彈性伸縮的特性可以幫助使用者以一種簡單、高效的方式降低整體 Kubernetes 成本。
HPA 可以監控 Pod 的使用情況,自動調整大小,以保持預期的使用水平。VPA 則可以調整叢集中的資源請求和容器限制。自動伸縮會根據需求自動從 Kubernetes 叢集中新增或刪除節點,它有助於確保工作負載總是有足夠的基礎設施資源來完成它們的工作,但又不至於讓使用者最終為閒置的基礎設施付費。
現階段而言,並非所有的 Kubernetes 服務或發行版都支援自動伸縮。但是,如果你所採用的服務支援,那麼它可以幫助你大幅降低 Kubernetes 成本。
4、為 K8s 工作負載選擇不同的購買策略
對於 AWS 或者 GCP 來說,按需例項是最昂貴的選項。因此,我們應該充分利用預留的例項甚至是 Spot instances(競價型例項)。
相較於按需價格,Spot instances 最高可獲得90%的折扣(即1折)。它們是短期工作或無狀態服務的合適選擇,可以快速重新排程,同時不會丟失資料。為避免中斷,使用者可以使用工作負載管理工具,將 Spot 例項保留在某個固定時段內。
為每個節點都規劃購買策略,並在可能的情況下優先使用 Spot 例項,以充分利用購買折扣。如果 Spot 例項不適合你的工作負載,比如你的容器正在執行資料庫,那麼可以購買具備穩定可用性的節點。在任何情況下,儘量減少使用按需資源。
5、Kubernetes 排程
調整 Pod 和節點的大小和規模後,需要確保 pod 被排程到了正確的節點上。K8s 排程流程將 Pod 與節點相匹配,並且排程器的預設行為可以自定義。假設你想把具有關鍵業務功能的容器放在一個高效能的節點上,而把其他不太關鍵的元件放在相對較低效能的節點上。預設情況下,即便在不同效能層上配置節點,K8s 也無法匹配正確的節點。
如果一個非關鍵的pod被安排在一個高效能的節點上,會導致效能浪費並最終提高成本。Kubernetes 提供諸如 nodeSelector、親和性以及汙點和容忍等特性以解決此類問題並最佳化排程。它們可以用來完全配置Kubernetes的排程過程,以滿足使用者的需求,從而使使用者能夠有效地使用整個節點的可用資源。
6、簡化開發
儘管容器化的浪潮愈演愈烈,但並不意味著一切都需要容器化。一些開發團隊試圖為了容器化而容器化應用程式或工作負載,這可能會導致在 Kubernetes 叢集上執行不必要的工作負載。這類工作負載在其他技術上也可以輕鬆執行,並且成本會更低。譬如,可以將無伺服器技術用於基於事件的特性,而主要將 Kubernetes 用於高可用性和關鍵任務的功能。
總結
成本管理並不總是開發人員的最高優先順序,但是確實是必須考慮的方面。正確的解決方案可以使Kubernetes的成本管理變得及時、經濟和毫不費力,使企業能夠在成本和效能之間實現完美的平衡。
利用不同的雲供應商建立多雲環境可以使使用者從每個平臺提供的折扣中獲益,甚至可以在平臺之間遷移工作負載以選擇最優惠的選項,同時不會出現服務中斷或服務質量下降的情況。另外,也可以選擇使用不同的技術,將功能解除安裝到符合要求的技術或服務上。這種選擇可以在有效管理整個應用程式的同時,更深度地管理成本。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026925/viewspace-2949104/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 最佳化採購流程及降低採購成本策略
- 低價策略幫助AI企業降低模型訓練成本AI模型
- 1個工具,助你提升K8S故障排查效率!K8S
- 雲端計算降低辦公成本
- 如何使Codis儲存成本降低90%?個推使用Pika做到了!
- 雲端計算技術降低了IT成本,但是降低的幅度會多大?
- 六個方法助您最佳化雲端儲存成本
- 8個雲成本最佳化的最佳實踐
- 掌握這七個專案管理策略,助你成功交付專案專案管理
- 線上教育類App如何降低獲客成本?APP
- 雲上跑容器,如何降低儲存成本
- CRM平臺如何有效降低成本
- Diffusion預訓練成本降低6.5倍,微調硬體成本降低7倍!Colossal-AI完整開源方案低成本加速AIGC產業落地AIGC產業
- 雲伺服器能降低成本嗎?伺服器
- 我是如何降低專案的溝通成本?
- 最大化LED亮度以降低系統成本
- 十招IT安全策略 降低安全風險
- GPU伺服器定製化降低成本GPU伺服器
- 電話機器人能降低成本嗎?機器人
- 阿里雲Elasticsearch Severless 如何做到成本降低50%阿里Elasticsearch
- 物聯網:降低資料中心總擁有成本
- 收藏貼!6個談薪小技巧,助你拿到滿意薪資
- 如何降低ERP專案的整體運營成本
- 準確估算頻寬用量 降低伺服器租用成本伺服器
- 降低雲成本的 N 種方法:終極節省指南
- 降低彈性雲伺服器成本,聊聊宿主機管理伺服器
- 5G+智慧礦山系統如何降低開發成本
- SOLIDWORKS案例 | 無縫協作方式降低成本Solid
- 調查顯示:BYOD未能幫助企業降低IT成本
- iPhone X二代曝光:JDI OLED屏、成本降低40%iPhone
- 個推技術實踐 | Spark效能調優看這篇,效能提升60%↑ 成本降低50%↓Spark
- 鎖的最佳化策略
- DFS剪枝最佳化策略
- 合同智慧稽核軟體-為企業降低人力成本
- 電子招投標系統 —降低企業採購成本
- 支小蜜智慧食堂k12降低食堂成本,提升支付效率
- 如何利用空號檢測 API 降低企業的業務成本API
- Teksystems:調查顯示BYOD未能幫助企業降低IT成本