AHPA:开启 Kubernetes 弹性预测之门
作者:元毅、子白
導(dǎo)讀
在云原生容器時(shí)代,用戶需要面對(duì)不同的業(yè)務(wù)場(chǎng)景:周期性的業(yè)務(wù),Serverless 按需使用等。在使用自動(dòng)彈性中, 會(huì)發(fā)現(xiàn)這樣或那樣的問題,其中最需要關(guān)注的是彈性滯后、冷啟動(dòng)問題。阿里巴巴云原生團(tuán)隊(duì)和阿里達(dá)摩院決策智能時(shí)序團(tuán)隊(duì)合作開發(fā) AHPA 彈性預(yù)測(cè)產(chǎn)品,該產(chǎn)品主要出發(fā)點(diǎn)是基于檢測(cè)到的周期做“定時(shí)規(guī)劃”,通過規(guī)劃實(shí)現(xiàn)提前擴(kuò)容的目的,在保證業(yè)務(wù)穩(wěn)定的情況下,讓你真正實(shí)現(xiàn)按需使用。
背景
用戶對(duì)云彈性能力的期望越來越高,這個(gè)期望主要來自兩方面。一是云原生概念的崛起,從 VM 時(shí)代到了容器時(shí)代,云的使用模式正在發(fā)生變化。二是新型業(yè)務(wù)模式的崛起,這些崛起的新型業(yè)務(wù)模式在設(shè)計(jì)之初就是基于云來建構(gòu)的,天然就有對(duì)彈性的訴求。
有了云,用戶不再需要自己從物理機(jī)、機(jī)房搭建基礎(chǔ)設(shè)施,云給用戶提供了非常彈性的基礎(chǔ)設(shè)施。云的最大優(yōu)勢(shì)就是可以給用戶提供彈性的資源供給,特別是到了云原生時(shí)代,用戶對(duì)彈性的訴求也越來越強(qiáng)烈。彈性需求強(qiáng)度在 VM 時(shí)代還是人工操作分鐘級(jí)別的,在容器時(shí)代,已經(jīng)達(dá)到秒級(jí)的要求,用戶面對(duì)不同的業(yè)務(wù)場(chǎng)景,對(duì)云的期望和要求也正在發(fā)生變化:
-
周期性的業(yè)務(wù)場(chǎng)景: 新型業(yè)務(wù)比如直播、在線教育和游戲,這些業(yè)務(wù)有一個(gè)很大的共同點(diǎn)就是有非常明顯的周期性,這種周期性促使客戶思考面向彈性的業(yè)務(wù)架構(gòu)。再加上云原生的理念很自然的就想到按需彈起一批服務(wù)起來,用完就釋放。
-
Serverless 的到來: Serverless 的核心理念是按需使用,自動(dòng)彈性。用戶不需要容量規(guī)劃。但當(dāng)你真正開始使用 Serverless 的時(shí)候,會(huì)發(fā)現(xiàn)這樣或那樣的問題,其中最需要關(guān)注的是彈性滯后、冷啟動(dòng)問題。對(duì)于響應(yīng)時(shí)延敏感的業(yè)務(wù),這是不可接受的。
那么面對(duì)上面的場(chǎng)景,當(dāng)前 Kubernetes 中現(xiàn)有的彈性方案是否可以解呢?
傳統(tǒng)彈性方案面臨的問題
一般在 Kubernetes 中管理應(yīng)用實(shí)例數(shù)有三種方式:固定實(shí)例數(shù)、HPA 和 CronHPA 。使用最多的是固定實(shí)例數(shù),固定實(shí)例數(shù)最大的問題就是在業(yè)務(wù)波谷時(shí)造成很明顯的資源浪費(fèi)。為了解決資源浪費(fèi)的問題所以有了 HPA,但 HPA 的彈性觸發(fā)是滯后的,這就導(dǎo)致資源的供給也會(huì)滯后,資源不能及時(shí)供給可能會(huì)導(dǎo)致業(yè)務(wù)穩(wěn)定性下降。CronHPA 可以定時(shí)伸縮,看起來可以解決彈性滯后的問題,但具體定時(shí)粒度有多細(xì)、業(yè)務(wù)量有變化時(shí)需要頻繁地手動(dòng)調(diào)節(jié)定時(shí)彈性策略嗎?如果這樣做,這就會(huì)帶來非常繁重的運(yùn)維復(fù)雜度,也很容易出錯(cuò)。
AHPA 彈性預(yù)測(cè)
AHPA(Advanced Horizontal Pod Autoscaler)彈性預(yù)測(cè)主要出發(fā)點(diǎn)是基于檢測(cè)到的周期做“定時(shí)規(guī)劃”,通過規(guī)劃實(shí)現(xiàn)提前擴(kuò)容的目的。但既然是規(guī)劃就會(huì)有疏漏,所以需要對(duì)規(guī)劃的實(shí)例數(shù)有一個(gè)實(shí)時(shí)調(diào)整的能力。所以本方案有兩個(gè)彈性策略:主動(dòng)預(yù)測(cè)和被動(dòng)預(yù)測(cè)。主動(dòng)預(yù)測(cè)基于達(dá)摩院 RobustPeriod 算法[1] 識(shí)別周期長(zhǎng)度然后利用RobustSTL 算法[2] 提起出周期性趨勢(shì),主動(dòng)預(yù)測(cè)下個(gè)周期應(yīng)用的實(shí)例數(shù)量;被動(dòng)預(yù)測(cè)基于應(yīng)用實(shí)時(shí)數(shù)據(jù)設(shè)定實(shí)例數(shù)量,可以很好的應(yīng)對(duì)突發(fā)流量。此外,AHPA 還增加了兜底保護(hù)策略,用戶可以設(shè)置實(shí)例數(shù)量的上下界。AHPA 算法中最終生效的實(shí)例數(shù)是主動(dòng)預(yù)測(cè)、被動(dòng)預(yù)測(cè)及兜底策略中的最大值。
架構(gòu)
彈性首先是要在業(yè)務(wù)穩(wěn)定的情況下進(jìn)行的,彈性伸縮的核心目的不僅是幫用戶節(jié)省成本,更是增強(qiáng)業(yè)務(wù)的整體穩(wěn)定性、免運(yùn)維能力和構(gòu)建核心競(jìng)爭(zhēng)力。AHPA 架構(gòu)設(shè)計(jì)的基本原則:
-
穩(wěn)定性: 保證用戶服務(wù)穩(wěn)定的情況下進(jìn)行彈性伸縮
-
免運(yùn)維: 不給用戶增加額外的運(yùn)維負(fù)擔(dān),包括:不在用戶側(cè)增加新的 Controller、Autoscaler 配置語義比 HPA 更清晰
-
面向 Serverless: 以應(yīng)用為中心,面向應(yīng)用維度的設(shè)計(jì),用戶無需關(guān)心實(shí)例個(gè)數(shù)的配置,按需使用、自動(dòng)彈性。
架構(gòu)如下:
-
豐富的數(shù)據(jù)指標(biāo): 支持包括 CPU、Memory、QPS、RT 以及外部指標(biāo)等
-
穩(wěn)定性保障: AHPA 的彈性邏輯基于主動(dòng)預(yù)熱、被動(dòng)兜底的策略,并結(jié)合降級(jí)保護(hù),保證了資源穩(wěn)定。
-
- 主動(dòng)預(yù)測(cè):根據(jù)歷史預(yù)測(cè)出未來一段時(shí)間的趨勢(shì)結(jié)果,適用于周期性的應(yīng)用。
-
- 被動(dòng)預(yù)測(cè):實(shí)時(shí)預(yù)測(cè)。針對(duì)突發(fā)流量場(chǎng)景,通過被動(dòng)預(yù)測(cè)實(shí)時(shí)準(zhǔn)備資源。
-
- 降級(jí)保護(hù):支持配置多個(gè)時(shí)間區(qū)間范圍最大、最小實(shí)例。
-
多種伸縮方式: AHPA 支持伸縮方式包括 Knative、HPA 以及 Deployment:
-
- Knative:解決 Serverless 應(yīng)用場(chǎng)景下,基于并發(fā)數(shù)/QPS/RT 彈性冷啟動(dòng)的問題
-
- HPA:簡(jiǎn)化 HPA 彈性策略配置,降低用戶使用彈性的門檻,解決使用 HPA 面臨的冷啟動(dòng)的問題
-
- Deployment:直接使用 Deployment,自動(dòng)擴(kuò)縮容
適應(yīng)場(chǎng)景
AHPA 適應(yīng)場(chǎng)景包括:
- 有明顯周期性場(chǎng)景。如直播、在線教育、游戲服務(wù)場(chǎng)景等
- 固定實(shí)例數(shù)+彈性兜底。如常態(tài)業(yè)務(wù)下應(yīng)對(duì)突發(fā)流量等
- 推薦實(shí)例數(shù)配置場(chǎng)景
預(yù)測(cè)效果
開啟 AHPA 彈性后,我們提供可視化頁面,用于查看 AHPA 效果。下面是一個(gè)基于 CPU 指標(biāo)進(jìn)行預(yù)測(cè)的示例(與使用 HPA 比較):
說明:
- Predict CPU Oberserver:藍(lán)色表示 HPA 實(shí)際的 CPU 使用量,綠色表示預(yù)測(cè)出來的 CPU 使用量。綠色曲線大于藍(lán)色,表明通過預(yù)測(cè)給出的容量是足夠的。
- Predict POD Oberserver:藍(lán)色表示使用 HPA 實(shí)際的擴(kuò)所容 Pod 數(shù),綠色表示預(yù)測(cè)出來的擴(kuò)所容 Pod 數(shù),綠色曲線小于藍(lán)色,表明通過預(yù)測(cè)彈性的 Pod 數(shù)更低。
- 周期性:根據(jù)歷史 7 天的數(shù)據(jù),通過預(yù)測(cè)算法檢測(cè)到該應(yīng)用具備周期性。
結(jié)論:預(yù)測(cè)結(jié)果表明,彈性預(yù)測(cè)趨勢(shì)符合預(yù)期。
邀測(cè)試用
點(diǎn)擊??此處??查看阿里云容器服務(wù) AHPA 彈性預(yù)測(cè)產(chǎn)品文檔詳情。當(dāng)前 AHPA 已開啟用戶邀測(cè),歡迎感興趣的用戶點(diǎn)擊文檔中“提交工單”位置申請(qǐng)白名單,期待您的試用及反饋。
參考文獻(xiàn)
[1] (阿里達(dá)摩院決策智能時(shí)序團(tuán)隊(duì)) 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] (阿里達(dá)摩院決策智能時(shí)序團(tuán)隊(duì)) 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] (阿里達(dá)摩院決策智能時(shí)序團(tuán)隊(duì)) 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.
總結(jié)
以上是生活随笔為你收集整理的AHPA:开启 Kubernetes 弹性预测之门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与容器服务 ACK 发行版的深度对话最终
- 下一篇: 如虎添翼|高德地图+Serverless