kubernetes 降本增效標準指南| 容器化計算資源利用率現象剖析

騰訊雲原生發表於2021-04-27

作者:詹雪嬌,騰訊雲容器產品經理,目前主要負責騰訊雲叢集運維中心的產品工作。
張鵬,騰訊雲容器產品工程師,擁有多年雲原生專案開發落地經驗。目前主要負責騰訊雲TKE叢集和運維中心開發工作。

引言

降本增效從雲端計算髮展至今一直都是企業上雲最核心的關注點,無論是線上業務還是大資料、AI業務,都非常依賴算力的消耗,成本問題都是企業上雲進行決策的核心因素。

從雲端計算本身來看,單純把業務從 IDC 搬遷上雲不修改任何業務架構,提高計算資源利用率需要非常大的運維成本和人力成本投入到改造業務適配彈性伸縮和業務可排程性中。隨著雲原生技術的普及和推廣,容器和 kubernetes 等技術能夠天然的與業務、基礎設施結合,簡化資源管理、感知業務型別、自動彈性擴容和排程。

為幫助企業在使用雲原生技術時,更好的實現降本增效,騰訊雲容器團隊推出《kubernetes 降本增效標準指南》系列,包括且不限於基於成熟度模型提供資源利用率提升建議、多維度彈性資源使用建議、智慧負載推薦提升精確度、騰訊云云原生成本管理指導手冊等,與此同時也將推出系列助力容器化降低成本的能力套件,如容器成本組成檢視、成本預測評估工具、成本監控工具、成本定時報告等,以及配套的智慧負載值推薦、成本感知排程、競價例項回收動態控制器等,敬請期待。

本文中,騰訊雲容器團隊抽樣調研了已授權的企業客戶,對資源使用情況進行了一次真實的資料分析,以實際的行業資料介紹容器化對資源利用率的可提升空間。

資源利用率資料剖析

本次調研抽樣了1000+已授權的企業客戶和個人客戶的資料,其中企業客戶750, 個人開發者250+,統計節點數超5W+。

IDC的計算資源冗餘,平均利用率低至10%

IDC 資料中心由於缺少彈效能力,為保證業務應對突發請求等情況,普遍資源會存在冗餘,資源使用率低。

首先我們來看看全球資料中心的利用率。麥肯錫的一份研究報告表示[1],企業管理者在考慮穩定性及提高可用性的同時,也應該將新的業務重點放在遏制效率低下和成本上升的問題上。調研結果顯示,許多資料中心的伺服器多達30%的功能是“失效”的,而伺服器的平均每日利用率不到3%;而在整個資料中心,伺服器的平均每日利用率通常最高僅為6%。以上資料表明,資料中心的伺服器成本及資源消耗方面會給企業造成巨大的“浪費”。
圖1

圖1: 經授權的採集個別騰訊雲客戶物理機平均資源使用率情況( 樣本數200+)

上圖是一個典型的客戶機器白天業務繁忙,晚上資源空閒的情況, 由於物理裝置彈效能力弱,計算資源往往要按業務峰值再加一定的 Buff 來儲備資源, 甚至為保證業務穩定性要預留較大的資源 buff,因此在資源使用上會存在極大的浪費。

IDC上雲後資源利用率提高有限

企業上雲需要進行嚴謹細緻的調研工作, 包括收集雲廠商硬體、網路環境、產品能力等內容,往往需要從多個不同的視角進行分析,實際上雲過程中第一步就是先將基礎設施上雲,包括計算資源、儲存、伺服器、資料庫等,保證在業務和平臺系統儘量改動小的情況下,順利遷移上雲。該步驟並不會顯著提高實際的資源使用率,但有利於降低企採購基礎設施,以及建設和運維的成本。

圖2

圖2: 普通非容器化計算節點資源使用率分析資料(樣本數4W+)

根據上述調研樣本的分析, 絕大多數非容器化的業務在計算資源利用率上整體不高,並且企業為了保證每個業務之前良好的隔離性,一臺機器上一般只會部署一個業務,即每個業務都是獨立部署且分開管理的,單個業務都會獨佔一部分專屬資源。在此業務低谷時期,其他業務不能利用這部分專屬的資源,以致造成資源浪費。基礎設施上雲後,企業可根據業務的屬性進行雲化改造,充分利用雲的彈效能力,讓資源利用率進一步提高,降低IT投入成本。從上述實際調研資料分析來看,僅利用雲IaaS層的彈性伸縮,來提升資源利用率,其空間有限,並會給新業務改造和後續的運維帶來額外的成本投入。

業務雲原生化改造,資源利用率提升最高可達60%~70%

圖3

圖3: 普通節點與TKE節點資源使用率分析(樣本數:4W個普通非容器化節點, 1W個TKE節點)

客戶容器化後整體平均的CPU利用率從上圖來看,整體提高並不多,主要原因是,雖然大量業務已經容器化,但並未進行可動態擴容的改造。

圖4

圖4:部分配置了節點池彈性伸縮業務應用啟用了HPA平均資源使用率圖示(樣本1000+TKE節點)

圖5

圖5:所有抽樣樣本中平均資源使用率分佈情況(樣本數1W+TKE節點)

從圖3、4、5對比可以看到,不同企業容器化後,其資源利用率差異非常大,低的不到10%, 高的可達60%-70%。除了企業本身不同的業務屬性之外,騰訊雲原生團隊還對抽樣客戶進行了深入的調研和訪談,瞭解到不同企業架構部署上存在較大的差異,這是造成企業資源利用率不同的主要原因。

  1. 資源利用率低的企業,在使用容器時,前期更多僅關注在容器解決環境一致性的問題上,實際上並未充分利用好容器的彈效能力, 並且在部署模型上,單節點的容器密度不高,導致整體資源利用率跟容器化改造前差異不大。

  2. 從實際資料看,業務即便已經容器化,但在一定時間內的資源使用,仍然存在波峰波谷不均的情況。因此,為了保證服務的可靠性和穩定性,一般會以流量峰值為基線去配置資源規格,以保證高併發時業務以良好的效能運轉,但是過了峰值期之後(一般時間佔比較小),業務回到峰谷狀態,實際僅使用一小部分資源,從而導致在峰谷時段,造成大量的資源浪費。

  3. 而資源利用率高的企業,在業務容器化後,更多利用了業務混合部署,大大提高了容器部署密度,讓單節點容器密度平均在1:10,進而提升資源利用率。

  4. 同時企業如果充分利用好了容器的彈性伸縮能力,資源利用率也是可以大幅提升的。對於非容器化的、存在波峰波谷的業務,即使配置了彈性伸縮能力,啟動速度也是分鐘級的,也還是難以保證在短時間內啟動大規模計算資源來應對高併發需求。而容器是秒級的啟動速度,使得容器化的業務具備高密度、高彈性的特性,在面對突發訪問量時也能輕鬆應對。在這種業務模式下,容器化利用不同級別的自動彈性伸縮能力,從而解決了在低谷時期的資源浪費問題。

    容器彈性伸縮能力如下:HPA(Horizontal Pod Autoscaler):在達到使用者自定義閾值(CPU利用率、CPU使用量等)時在30s內自動擴縮pod數量,當受到節點資源限制導致 Pod pending 時,觸發節點層級的擴縮容,即CA(Cluster Autoscaler):兩種資源粒度的彈性伸縮能力保證客戶在合適的時間分配合適的資源,最大限度保證資源的高效利用。另外,基於K8s的排程編排能力,支援按照Pod真實負載進行動態排程,提升節點資源利用率;線上業務低負載執行時,同時部署“對延時不敏感”的離線業務,提高資源利用率。

提升資源利用率的關鍵點

騰訊內部容器化業務資源利用率也是權衡容器化深度的關鍵指標,根據騰訊雲原生團隊對容器彈性伸縮的實踐經驗,通過不同維度的彈效能力展開來看容器化後資源利用率提升的關鍵點, 首先看看 Kubernetes 各個元件的主要作用:

  1. HPA:維持應用的期望狀態(通過調節應用副本數)
  2. VPA:(Vertival Pod Autoscaler)預估應用的實際使用資源量
  3. 排程:驅動應用的期望狀態到資源的期望狀態的引擎
  4. CA:維持資源的期望狀態(通過調節節點數)image (7).png

那什麼是理想的彈性伸縮?怎麼樣的彈性伸縮能幫助我們更好的節約成本呢?簡單點說,就是在使用者需要的時候提供合適的資源。

  • 怎麼保證在需要的時候伸縮?相關元件要夠靈敏,響應要快。
  • 怎麼保證提供的資源合適?在計算 StatusApp/StatusRes 時要精確。

到這裡,可以明確彈性伸縮的兩個核心問題:

關鍵點1: 靈敏度,可以從 HPA 擴容速度、CA擴容速度、節點供應速度、業務擴容方式多維度進行提升。

關鍵點2: 精確度,從應用的期望狀態和資源的期望狀態為切入點,從提高CA擴容精確度 / VPA推薦 request 的精確度等角度進行提升。

資源利用率成熟度模型

針對本次調研的資料分析,騰訊雲原生團隊提出了容器化資源利用率成熟度模型。

第一階段:傳統部署模型, 業務為應對不同時間段計算資源使用不同的情況,必須以最高使用資源的峰值加一定的 buff 進行基礎設施的採購,平均利用率降低。

第二階段:簡單容器化改造後的業務,上雲並容器化改造,利用了容器進行業務混合部署,一定程度提高了資源利用率。

第三階段:業務進行微服務改造,業務可利用容器和雲的彈性伸縮能力,結合 Kubernetes 的HPA、VPA、CA 等能力,高峰擴容、空閒縮容,極大提高資源利用率。

第四階段:極致利用雲和容器化後的彈性, 提高彈性伸縮靈敏度和精度, 有離線業務的進行在離線混布,極致提高平均資源利用率。

後續

本文通過實際企業業務資料來詮釋容器化跟計算資源利用率的現狀和基本原理,為助力後續企業使用雲原生技術進行業務降本增效,騰訊雲容器團隊將推出系列的《kubernetes降本增效標準指南》,包括但不限於資源利用率提升建議、多維度彈性資源使用建議、智慧負載推薦提升精確度、騰訊云云原生成本管理指導手冊等。與此同時也將計劃推出系列的助力容器化降本成本的能力套件,如容器成本組成檢視、成本預測評估工具、成本監控工具、成本定時報告等,以及配套的智慧負載值推薦、成本感知排程、競價例項回收動態控制器等。敬請期待。

特別鳴謝

感謝以下客戶對本次報告提供真實資料支撐。

作業幫,致力於為全國中小學生提供全學科的學習輔導服務,累計使用者裝置安裝突破8億,月活使用者約1.7億,是中小學線上教育領軍品牌。

作業幫於2020年4-5月份將部分業務逐漸接入騰訊雲容器服務TKE,涉及數千業務應用,數十萬計算核數,極具規模化和複雜度,除卻穩定性和效率之外,作業幫對成本也表示了高度關注。我們以資源利用率作為切入點。

  • 高峰時段的流量是平時峰段的20倍,是低峰時段(凌晨到5點左右)的上百倍,且流量上升曲線較陡。

因此,作業幫對於資源彈性排程的能力要求很高,在這種應用場景下,TKE為其提供了彈性伸縮的整體解決方案,利用HPA根據設定閾值調整pod副本數,與CA聯動控制節點數,以保障在高併發時業務仍以良好的效能執行。同時配合離線上混部、共享GPU等解決方案,容器化之後節點平均CPU利用率從10%提升到30%,成本下降40%,介面響應提升10%。

快看漫畫,漫畫行業領先APP,當前漫畫市場份額佔有率超50%以上,APP總使用者量超過2億,MAU超4000萬。公司於2019年12月份開始接入容器服務TKE,到目前為止,近千個服務裡90%的應用在容器中執行。快看漫畫容器化之前,由於需要應對活動、假期、熱門作品等多個場景,業務流量具備突發性和週期性,因此核心業務要有數倍容量的冗餘,資源無法最大化利用,還需手動擴縮容,人工干預較高。

TKE針對此類場景提供了服務分級,優化Request資源;擴縮能力,HPA,定時擴縮;離線任務,業務波谷時執行等產品能力,容器化之後資源使用率提升30%,成本下降超40%。

雲集,主打社交驅動的會員電商平臺,為電商平臺會員提供美妝個護、手機數碼、母嬰玩具、水果生鮮等多品類的商品選擇。於2019年年底接入TKE,目前常用應用已基本完成容器化。雲集反饋,容器化之前,機器的平均CPU利用率在高峰期都不會超過10%,浪費極其嚴重。容器化之後總體CPU使用率達到16.6%,成本節省超過50%。

相關文章