AHPA:开启 Kubernetes 弹性预测之门
作者:元毅、子白
導讀
在云原生容器時代,用戶需要面對不同的業務場景:周期性的業務,Serverless 按需使用等。在使用自動彈性中, 會發現這樣或那樣的問題,其中最需要關注的是彈性滯后、冷啟動問題。阿里巴巴云原生團隊和阿里達摩院決策智能時序團隊合作開發 AHPA 彈性預測產品,該產品主要出發點是基于檢測到的周期做“定時規劃”,通過規劃實現提前擴容的目的,在保證業務穩定的情況下,讓你真正實現按需使用。
背景
用戶對云彈性能力的期望越來越高,這個期望主要來自兩方面。一是云原生概念的崛起,從 VM 時代到了容器時代,云的使用模式正在發生變化。二是新型業務模式的崛起,這些崛起的新型業務模式在設計之初就是基于云來建構的,天然就有對彈性的訴求。
有了云,用戶不再需要自己從物理機、機房搭建基礎設施,云給用戶提供了非常彈性的基礎設施。云的最大優勢就是可以給用戶提供彈性的資源供給,特別是到了云原生時代,用戶對彈性的訴求也越來越強烈。彈性需求強度在 VM 時代還是人工操作分鐘級別的,在容器時代,已經達到秒級的要求,用戶面對不同的業務場景,對云的期望和要求也正在發生變化:
-
周期性的業務場景: 新型業務比如直播、在線教育和游戲,這些業務有一個很大的共同點就是有非常明顯的周期性,這種周期性促使客戶思考面向彈性的業務架構。再加上云原生的理念很自然的就想到按需彈起一批服務起來,用完就釋放。
-
Serverless 的到來: Serverless 的核心理念是按需使用,自動彈性。用戶不需要容量規劃。但當你真正開始使用 Serverless 的時候,會發現這樣或那樣的問題,其中最需要關注的是彈性滯后、冷啟動問題。對于響應時延敏感的業務,這是不可接受的。
那么面對上面的場景,當前 Kubernetes 中現有的彈性方案是否可以解呢?
傳統彈性方案面臨的問題
一般在 Kubernetes 中管理應用實例數有三種方式:固定實例數、HPA 和 CronHPA 。使用最多的是固定實例數,固定實例數最大的問題就是在業務波谷時造成很明顯的資源浪費。為了解決資源浪費的問題所以有了 HPA,但 HPA 的彈性觸發是滯后的,這就導致資源的供給也會滯后,資源不能及時供給可能會導致業務穩定性下降。CronHPA 可以定時伸縮,看起來可以解決彈性滯后的問題,但具體定時粒度有多細、業務量有變化時需要頻繁地手動調節定時彈性策略嗎?如果這樣做,這就會帶來非常繁重的運維復雜度,也很容易出錯。
AHPA 彈性預測
AHPA(Advanced Horizontal Pod Autoscaler)彈性預測主要出發點是基于檢測到的周期做“定時規劃”,通過規劃實現提前擴容的目的。但既然是規劃就會有疏漏,所以需要對規劃的實例數有一個實時調整的能力。所以本方案有兩個彈性策略:主動預測和被動預測。主動預測基于達摩院 RobustPeriod 算法[1] 識別周期長度然后利用RobustSTL 算法[2] 提起出周期性趨勢,主動預測下個周期應用的實例數量;被動預測基于應用實時數據設定實例數量,可以很好的應對突發流量。此外,AHPA 還增加了兜底保護策略,用戶可以設置實例數量的上下界。AHPA 算法中最終生效的實例數是主動預測、被動預測及兜底策略中的最大值。
架構
彈性首先是要在業務穩定的情況下進行的,彈性伸縮的核心目的不僅是幫用戶節省成本,更是增強業務的整體穩定性、免運維能力和構建核心競爭力。AHPA 架構設計的基本原則:
-
穩定性: 保證用戶服務穩定的情況下進行彈性伸縮
-
免運維: 不給用戶增加額外的運維負擔,包括:不在用戶側增加新的 Controller、Autoscaler 配置語義比 HPA 更清晰
-
面向 Serverless: 以應用為中心,面向應用維度的設計,用戶無需關心實例個數的配置,按需使用、自動彈性。
架構如下:
-
豐富的數據指標: 支持包括 CPU、Memory、QPS、RT 以及外部指標等
-
穩定性保障: AHPA 的彈性邏輯基于主動預熱、被動兜底的策略,并結合降級保護,保證了資源穩定。
-
- 主動預測:根據歷史預測出未來一段時間的趨勢結果,適用于周期性的應用。
-
- 被動預測:實時預測。針對突發流量場景,通過被動預測實時準備資源。
-
- 降級保護:支持配置多個時間區間范圍最大、最小實例。
-
多種伸縮方式: AHPA 支持伸縮方式包括 Knative、HPA 以及 Deployment:
-
- Knative:解決 Serverless 應用場景下,基于并發數/QPS/RT 彈性冷啟動的問題
-
- HPA:簡化 HPA 彈性策略配置,降低用戶使用彈性的門檻,解決使用 HPA 面臨的冷啟動的問題
-
- Deployment:直接使用 Deployment,自動擴縮容
適應場景
AHPA 適應場景包括:
- 有明顯周期性場景。如直播、在線教育、游戲服務場景等
- 固定實例數+彈性兜底。如常態業務下應對突發流量等
- 推薦實例數配置場景
預測效果
開啟 AHPA 彈性后,我們提供可視化頁面,用于查看 AHPA 效果。下面是一個基于 CPU 指標進行預測的示例(與使用 HPA 比較):
說明:
- Predict CPU Oberserver:藍色表示 HPA 實際的 CPU 使用量,綠色表示預測出來的 CPU 使用量。綠色曲線大于藍色,表明通過預測給出的容量是足夠的。
- Predict POD Oberserver:藍色表示使用 HPA 實際的擴所容 Pod 數,綠色表示預測出來的擴所容 Pod 數,綠色曲線小于藍色,表明通過預測彈性的 Pod 數更低。
- 周期性:根據歷史 7 天的數據,通過預測算法檢測到該應用具備周期性。
結論:預測結果表明,彈性預測趨勢符合預期。
邀測試用
點擊??此處??查看阿里云容器服務 AHPA 彈性預測產品文檔詳情。當前 AHPA 已開啟用戶邀測,歡迎感興趣的用戶點擊文檔中“提交工單”位置申請白名單,期待您的試用及反饋。
參考文獻
[1] (阿里達摩院決策智能時序團隊) Qingsong Wen, Kai He, Liang Sun, Yingying Zhang, Min Ke, and Huan Xu. RobustPeriod: Robust Time-Frequency Mining for Multiple Periodicity Detection, in Proc. of 2021 ACM SIGMOD/PODS International Conference on Management of Data (SIGMOD 2021), Xi’an, China, Jun. 2021.
[2] (阿里達摩院決策智能時序團隊) Qingsong Wen, Jingkun Gao, Xiaomin Song, Liang Sun, Huan Xu, Shenghuo Zhu. RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series, in Proc. of the 33rd AAAI Conference on Artificial Intelligence (AAAI 2019), 2019, pp. 5409-5416, Honolulu, Hawaii, Jan. 2019.
[3] (阿里達摩院決策智能時序團隊) Qingsong Wen, Zhe Zhang, Yan Li and Liang Sun. Fast RobustSTL: Efficient and Robust Seasonal-Trend Decomposition for Time Series with Complex Patterns, in Proc. of the 26th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (KDD 2020), San Diego, CA, Aug. 2020.
總結
以上是生活随笔為你收集整理的AHPA:开启 Kubernetes 弹性预测之门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与容器服务 ACK 发行版的深度对话最终
- 下一篇: 如虎添翼|高德地图+Serverless