博客 / 詳情

返回

資源畫像,看得見的容器資源優化助手

作者:張佐瑋(佑禕)

背景介紹

K8s 為集羣資源提供了良好的抽象,用户可以直接根據應用的資源需求填寫容器資源規格,這種方式有效提升了集羣資源的管理效率。然而,一直以來,容器資源規格填寫的難題一直都讓應用管理員們無法擺脱,過高的資源規格會導致資源浪費,而過低的規格又會為應用帶來潛在的穩定性風險。

往期文章《資源畫像,讓容器資源規格的填寫不再糾結》中我們介紹了阿里雲容器服務 Kubernetes 版(Alibaba Cloud Container Service for Kubernetes,以下簡稱 ACK)提供的資源規格智能推薦功能,用户可以通過 ack-slo-manager 組件提供的 CRD 對象查詢到容器的資源推薦值。

日前,ACK 控制枱在此基礎上正式發佈了資源畫像功能,為用户提供了可視化的交互頁面,便於管理員快速分析應用資源規格的合理性,並進行資源規格配置的變更。該功能目前已經正式開放公測,ACK 用户可以直接申請白名單試用。

容器資源配置

K8s 使用了 request 和 limit 來描述容器對 CPU 和內存資源的需求,reqeust 影響 Pod 的節點分配結果,調度器會使用節點的“資源容量”(capacity)進行匹配,確保容量充足,而 limit 決定了容器在節點運行時可以使用的資源上限,當容器嘗試超用資源時會被約束(throttled)甚至終止(kill)。

一直以來,容器資源規格 request 和 limit 的填寫都讓 K8s 的用户飽受困擾,一方面,應用管理員需要預留相當數量的資源冗餘來應對上下游鏈路的負載波動,保障線上應用的穩定性;而另一方面的現實是,在大部分在線服務的生產環境中,集羣的資源利用率處於相當低的水平,存在大量的資源浪費。

應用的資源畫像數據可以提供有效幫助,所謂資源畫像,指的是應用 CPU、內存等資源的使用特徵,如果我們能夠將資源使用的歷史數據收集起來,並進行彙總分析,在設置容器資源規格時就可以做到有的放矢。ACK 控制枱資源畫像功能的發佈,就旨在解決這一難題,幫助運維人員優化容器資源規格,提升管理效率,保障應用穩定運行的同時,充分提升集羣資源使用率。

資源畫像

ACK 資源畫像會持續收集容器的資源用量進行彙總分析,為每個容器生成資源規格的推薦值,控制枱會針對工作負載原始的資源請求量(request)給出調整建議,包括“升配”、“降配”、以及”保持“三種,若工作負載有多個容器,控制枱會優先使用偏差幅度最大的容器作為推薦。應用管理員可以通過該頁面直接篩選出需要調整的應用,並在詳情頁進行修改。

 title=

策略管理

資源畫像支持按需開啓的的管理策略,可以指定命名空間和應用類型範圍。策略同時還支持為應用配置資源消耗冗餘,所謂資源消耗冗餘,對應的場景是管理員在評估應用業務容量時(例如 QPS),通常不會將物理資源使用到 100%。原因既包括超線程等物理資源的侷限性,也包括應用自身需要考慮留有餘量以應對高峯時段的負載請求。當資源畫像的推薦值與原始資源請求的差距超過安全冗餘時,才會提示降配建議。

 title=

資源用量分析

在資源畫像控制枱主頁,點擊工作負載名稱,可以進入對應的畫像詳情頁面,在畫像詳情頁可以對應用的資源消耗數據做進一步的詳細分析。詳情頁的資源曲線分別展示了各容器的資源限制值(limit)、資源請求值(request)、資源畫像功能提供的推薦值(recommend),以及應用各副本資源使用量的平均值和最大值(average/max usage)。

通過應用的畫像詳情頁,用户可以對資源使用情況進行直觀的分析,評估容器當前的資源規格(request/limit)是否合理。

 title=

資源配置變更

畫像詳情頁面底部還同時提供了資源變配的功能,變配窗口內默認展示了各容器當前的所需資源(request)和限制資源(limit),以及資源畫像為容器生成的推薦值,推薦值來自於對容器資源消耗歷史數據的聚合分析,確保推薦值可以儘量滿足容器資源消耗的需求。這裏同時還展示了策略管理中為應用配置的冗餘係數,方便應用管理員在修改資源規格配置時參考。

 title=

填寫完成後點擊確定按鈕,將執行資源規格更新操作並自動跳轉到工作負載詳情頁。資源規格更新後,控制器會對工作負載進行滾動更新並重新創建 Pod。

使用建議

資源冗餘配置

資源畫像的變配建議是比較推薦值與當前應用資源申請量(request)得到的,當推薦值高於 request 時,説明容器實際的資源用量已經超過了申請量,應提高請求規格;而當推薦值低於 request 時,説明容器實際的資源用量低於請求量,但這並不代表着一定要降低請求規格。

原因是應用管理員在填寫資源申請時,通常都會在原始的資源需求基礎上額外增加一定程度的資源冗餘,用於應對流量高峯,或是做例如“同城多活”這類高可用場景的切換。此外,部分應用還對資源較為敏感,無法在宿主機負載較高時平穩運行,這也需要在基礎值上調高規格。

因此資源畫像的變配建議會參考用户在策略管理中配置的冗餘係數,只有當推薦值顯著低於請求量時才會提示“降配”操作。冗餘係數隻影響資源變配的提示,不影響推薦值算法的計算過程,原因是資源畫像提供的推薦值是對應用當前資源需求情況的總結,管理員在使用時應結合應用自身特性,在推薦值的基礎之上進行加工。

 title=

應用適用類型

目前資源畫像的推薦值會優先考慮滿足容器的資源使用,確保可以覆蓋絕大部分歷史數據樣本,因而更適用於在線類型的應用,因為它們通常以服務的形式部署,對響應時間(RT)會有嚴格的約束,要求資源必須及時得到滿足。

與“在線”相對應的是“離線”應用,通常為批處理類型的任務,其更關注數據處理的整體吞吐量,可以接受一定程度的資源競爭,以提高集羣資源的整體利用率,因此當前資源畫像的推薦值對於離線應用來説會顯得有些保守。此外,集羣內還會有一些關鍵的系統組件,通常以“主備”的形式部署多個副本,處於“備份”角色的副本長期處於資源閒置狀態。這些“備份”角色的資源用量樣本數據會對畫像算法產生一定程度的干擾,影響推薦值的準確性。

針對這些場景,管理員應基於應用特點對資源畫像的推薦值二次加工後再使用,後續我們也將開放更多能力,提供更加精細的資源畫像策略管理。

數據累積時長

資源畫像推薦值的算法涉及一套多維度的數據模型,核心關注以下幾個方面:

  1. 算法會持續不斷的收集容器的資源用量數據,取 CPU 和內存的聚合統計值作為推薦。 
  2. 針對樣本數據的時間因素進行了優化,在聚合統計時,較新的數據採樣點會擁有更高的權重。 
  3. 算法參考了容器出現 OOM 等運行狀態信息,可以進一步提高推薦值的準確性。 

通過以上原理可以看出,資源畫像結果的準確性會隨着數據樣本的累積逐漸提升,因此在初次使用時建議至少保持一天以上的數據累積。原因是當前互聯網類型的在線應用會受到人們生產生活習慣的影響,流量負載的峯谷會在不同時間段出現,例如出行類應用會有早晚高峯,文娛類應用會在工作日和節假日的呈現不同特徵。因此最好的使用方式,是確保工作負載穩定運行一段時間,收集的數據完整覆蓋了流量的波峯波谷之後再使用。

未來計劃

ACK 資源畫像控制枱後續的產品功能已經在規劃中,未來我們將提供更為精細化的管理策略以及更為便捷的使用方式,敬請期待!

往期文章《Koordinator 0.6:企業級容器調度系統解決方案,引入 CPU 精細編排、資源預留與全新的重調度框架》中我們介紹了雲原生混部開源系統 Koordinator 的一系列功能,近期 Koordinator 剛剛發佈了最新的 0.7 版本,歡迎大家訪問官網"koordinaotr.sh"查閲。

接下來我們將逐步把資源畫像相關的技術能力也貢獻到開源社區,幫助更廣大的行業人士改善雲原生工作負載運行的效率、穩定性和計算成本。

Koordinator 是一個開放的社區,非常歡迎廣大雲原生愛好者們通過各種方式一起參與共建,無論您在 K8s 領域是初學乍練還是駕輕就熟,我們都非常期待聽到您的聲音!

Github 地址:https://github.com/koordinato...

歡迎掃描下方微信二維碼加入 Koordinator 微信羣:

 title=

您也可以使用釘釘掃描下方二維碼或搜索羣號 33383887 加入 Koordinator 社區釘釘羣:

 title=

點擊此處,即可查看阿里雲 ACK 資源畫像控制枱的詳細介紹和使用方法!

user avatar yingyongwubideshuitong 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.