AHPA概述
在云原生場(chǎng)景下,資源容量通常難以預(yù)估,而使用Kubernetes原生的HPA時(shí)需要面對(duì)彈性滯后以及配置復(fù)雜問(wèn)題。為此,ACK推出了AHPA(Advanced Horizontal Pod Autoscaler)彈性預(yù)測(cè),支持根據(jù)業(yè)務(wù)歷史指標(biāo),自動(dòng)識(shí)別彈性周期并對(duì)容量進(jìn)行預(yù)測(cè),提前進(jìn)行彈性規(guī)劃,解決彈性滯后的問(wèn)題。
背景信息
傳統(tǒng)管理應(yīng)用實(shí)例數(shù)有固定實(shí)例數(shù)、HPA和CronHPA三種方法。三種方法的缺點(diǎn)如下。
類型 | 缺點(diǎn) |
固定實(shí)例數(shù) | 資源浪費(fèi)嚴(yán)重,在業(yè)務(wù)低谷時(shí)仍需要全量支付資源費(fèi)用。 |
HPA | 彈性觸發(fā)滯后,只有達(dá)到業(yè)務(wù)洪峰才會(huì)觸發(fā)彈性伸縮。 |
CronHPA |
|
針對(duì)上述彈性方式存在的問(wèn)題,ACK支持AHPA彈性預(yù)測(cè)功能,以提高資源利用率和易用性。AHPA彈性預(yù)測(cè)根據(jù)歷史數(shù)據(jù)自動(dòng)規(guī)劃未來(lái)24小時(shí)每一分鐘的應(yīng)用實(shí)例數(shù),相當(dāng)于進(jìn)行1440個(gè)點(diǎn)(一天為1440分鐘)的CronHPA定時(shí)配置。如下圖所示,左側(cè)為傳統(tǒng)HPA策略,右側(cè)為有預(yù)測(cè)功能的HPA。
傳統(tǒng)HPA策略:在業(yè)務(wù)量上漲之后開(kāi)始擴(kuò)容,滯后的資源供給不能及時(shí)補(bǔ)充業(yè)務(wù)需求。
有預(yù)測(cè)功能的HPA:根據(jù)歷史Pod的Ready Time以及歷史Metrics自動(dòng)學(xué)習(xí)規(guī)律,在業(yè)務(wù)量上漲之前的一個(gè)Ready Time開(kāi)始擴(kuò)容。當(dāng)業(yè)務(wù)量上漲時(shí)Pod已提前準(zhǔn)備,可以及時(shí)供給資源。
業(yè)務(wù)架構(gòu)
豐富的數(shù)據(jù)指標(biāo):支持包括CPU、GPU、Memory、QPS、RT以及外部指標(biāo)等。
穩(wěn)定性保障:AHPA的彈性邏輯基于主動(dòng)預(yù)測(cè)、被動(dòng)兜底的策略,并結(jié)合降級(jí)保護(hù),保證了資源的穩(wěn)定性。
主動(dòng)預(yù)測(cè):根據(jù)歷史指標(biāo)預(yù)測(cè)出未來(lái)一段時(shí)間的趨勢(shì)結(jié)果,適用于周期性的應(yīng)用。
被動(dòng)預(yù)測(cè):實(shí)時(shí)預(yù)測(cè)。針對(duì)突發(fā)流量場(chǎng)景,通過(guò)被動(dòng)預(yù)測(cè)實(shí)時(shí)準(zhǔn)備資源。
降級(jí)保護(hù):支持配置多個(gè)時(shí)間區(qū)間范圍最大、最小值。
多種伸縮方式:AHPA支持伸縮方式包括Knative、HPA以及Deployment:
Knative:解決Serverless應(yīng)用場(chǎng)景下,基于并發(fā)數(shù)、QPS或RT彈性冷啟動(dòng)的問(wèn)題。
HPA:簡(jiǎn)化HPA彈性策略配置,降低用戶使用彈性的門(mén)檻,解決使用HPA面臨的彈性滯后問(wèn)題。
Deployment:直接使用Deployment,自動(dòng)擴(kuò)縮容。
核心優(yōu)勢(shì)
更快:毫秒級(jí)預(yù)測(cè),秒級(jí)彈性。
更準(zhǔn):復(fù)雜周期識(shí)別率95%以上,主動(dòng)預(yù)測(cè)和被動(dòng)預(yù)測(cè)相結(jié)合。
更穩(wěn): 支持分鐘級(jí)邊界保護(hù)配置。
適用場(chǎng)景
有明顯周期性場(chǎng)景。例如直播、在線教育、游戲服務(wù)場(chǎng)景等。
固定實(shí)例數(shù)+彈性兜底。例如常態(tài)業(yè)務(wù)下應(yīng)對(duì)突發(fā)流量等。
推薦實(shí)例數(shù)配置場(chǎng)景。提供標(biāo)準(zhǔn)K8s API獲取預(yù)測(cè)結(jié)果,常用于與自身業(yè)務(wù)平臺(tái)進(jìn)行集成。
使用說(shuō)明
部署并使用AHPA,請(qǐng)參見(jiàn)部署AHPA。
基于GPU指標(biāo)實(shí)現(xiàn)AHPA彈性預(yù)測(cè),請(qǐng)參見(jiàn)基于GPU指標(biāo)實(shí)現(xiàn)AHPA彈性預(yù)測(cè)。
在Knative中使用AHPA彈性預(yù)測(cè),請(qǐng)參見(jiàn)在Knative中使用AHPA彈性預(yù)測(cè)。
關(guān)于如何使用AHPA解決彈性滯后問(wèn)題,請(qǐng)參見(jiàn)如何使用AHPA解決彈性滯后問(wèn)題。
關(guān)于AHPA彈性預(yù)測(cè)的最佳實(shí)踐,請(qǐng)參見(jiàn)AHPA彈性預(yù)測(cè)最佳實(shí)踐。
阿里云與達(dá)摩院合作的AHPA彈性預(yù)測(cè)論文,已被頂會(huì)ICDE錄用,詳情請(qǐng)參見(jiàn)ICDE 2022。