牟梁 張誼雯 伊成彬
摘要:隨著Docker為代表的容器技術(shù)發(fā)展, K8s容器云平臺(tái)得到廣泛關(guān)注。通過分析K8s的HPA自動(dòng)伸縮策略,在HPA伸縮策略的基礎(chǔ)上提出一種基于灰色馬爾科夫模型的伸縮策略。利用GM模型利用歷史數(shù)據(jù)進(jìn)行負(fù)載預(yù)測,以提高伸縮機(jī)制的適應(yīng)性。
關(guān)鍵詞:容器伸縮;云計(jì)算;灰色模型;
中圖分類號:TP393.08 ?文獻(xiàn)標(biāo)識碼:A
0引言
隨著云計(jì)算技術(shù)的發(fā)展,K8s提供的彈性伸縮是一個(gè)重要的容器伸縮機(jī)制,在負(fù)載較高的情況下能夠快速擴(kuò)容。在負(fù)載較低的狀態(tài)下釋放資源,在保證服務(wù)質(zhì)量的同時(shí)也減小資源浪費(fèi)的情況。在K8s平臺(tái)上HPA 被設(shè)計(jì)為一個(gè)調(diào)度控制器,通過周期性地檢查pod負(fù)載狀態(tài),并根據(jù)創(chuàng)建時(shí)設(shè)定的閾值進(jìn)行對比,通過增加pod數(shù)量增強(qiáng)負(fù)載能力。
目前自動(dòng)伸縮機(jī)制已經(jīng)有很多的研究,文獻(xiàn)[1]提出了一種多重閾值方法,對傳統(tǒng)方法只設(shè)上限閾值和下限閾值進(jìn)行擴(kuò)容;文獻(xiàn)[2,3]對靜態(tài)閾值的缺點(diǎn)進(jìn)行了分析,并用動(dòng)態(tài)閾值的方法改進(jìn)了靜態(tài)閾值造成的資源利用率低的問題;文獻(xiàn)[4]研究了閾值設(shè)定的大小對于伸縮擴(kuò)縮容的影響。但需要用戶對應(yīng)用特點(diǎn)以及云平臺(tái)基礎(chǔ)架構(gòu)有深入的理解。
1相關(guān)工作
1.1 HPA伸縮機(jī)制
為了解決業(yè)務(wù)流量變化波動(dòng)帶來的實(shí)際需求資源與預(yù)估需求資源之間的差距,出現(xiàn)了HPA水平自動(dòng)伸縮。HPA通過監(jiān)控分析每個(gè)Pod的負(fù)載數(shù)據(jù),通過用戶指定某種資源指標(biāo),在每個(gè)監(jiān)控周期輪詢一次Pod的資源,將設(shè)定值和當(dāng)前Pod副本的CPU利用率對比,判斷是否需要對Pod進(jìn)行擴(kuò)容或縮容操作,讓負(fù)載維持在目標(biāo)水平。
這個(gè)方法并不能在負(fù)載出現(xiàn)波動(dòng)變化時(shí)進(jìn)行及時(shí)的擴(kuò)縮容響應(yīng),在HPA進(jìn)行擴(kuò)容請求到Pod擴(kuò)容完成期間任務(wù)仍然在資源不足的狀態(tài)下運(yùn)行,存在任務(wù)隊(duì)列等待時(shí)間變長,SLA違約率增大,系統(tǒng)的任務(wù)吞吐量變小等問題。
1.2 灰色馬爾科夫模型
灰色模型通過不完全的信息建立灰色預(yù)測模型。預(yù)測過程為,在已有數(shù)據(jù)的前提下完成數(shù)據(jù)序列的預(yù)測。以下為詳細(xì)的模型過程:
作為原始數(shù)據(jù)序列。對原始數(shù)據(jù)序列進(jìn)行一次累加生成,得到第一次累加序列
對序列 建立GM對應(yīng)的線性微分方程,其中α與u為待計(jì)算的參數(shù)。
2 GM伸縮策略
2.1 GM數(shù)值預(yù)測
歷史數(shù)據(jù)序列設(shè)為H(k)。根據(jù)2.1節(jié)建立的模型得到預(yù)測結(jié)果序列P(k)。
歷史數(shù)據(jù)序列H(k)與預(yù)測序列P(k)做差,可得的到誤差序列E(k),預(yù)測值與實(shí)際值k時(shí)刻的誤差定義為E(k)=H(k)-P(k)。由此可得到誤差序列E(k)。此時(shí)利用2.1節(jié)建立的模型計(jì)算,可得到第k時(shí)刻的誤差值E(k)。
根據(jù)馬爾科夫理論,在當(dāng)前狀態(tài)的條件下,其未來狀態(tài)的變化與過去的狀態(tài)變化無關(guān),只與當(dāng)前狀態(tài)有關(guān)。對于預(yù)測的每個(gè)時(shí)刻,根據(jù)E(k)正負(fù)號狀態(tài)的變換建立狀態(tài)轉(zhuǎn)移矩陣。再建立符號確定函數(shù):
2.2 GM伸縮策略
GM策略先為容器的伸縮設(shè)定上限閾值α和下限閾值β,并設(shè)置一個(gè)周期,一個(gè)周期就進(jìn)行一次資源訪問,得到負(fù)載,通過建立好的計(jì)算模型判斷觸發(fā)不同的策略(1)擴(kuò)容策略:當(dāng)預(yù)測的結(jié)果大于上限閾值時(shí),則提前觸發(fā)擴(kuò)容。(2)縮容策略:當(dāng)預(yù)測的結(jié)果大于下限閾值時(shí),則放棄縮容。若預(yù)測結(jié)果小于下限閾值則利用馬爾科夫模型,選擇是否進(jìn)行縮容。
3實(shí)驗(yàn)結(jié)果與分析
本實(shí)驗(yàn)搭建了K8s集群,集群由三臺(tái)主機(jī)組成,一臺(tái)為 Master節(jié)點(diǎn),其它兩臺(tái)為 Node節(jié)點(diǎn)。其中K8s版本為1.5,Docker版本為1.10,操作系統(tǒng)為CentOS7。在集群上部署一個(gè)簡單的 web 應(yīng)用作為伸縮的對象,并使用 Apache JMeter模擬并發(fā)訪問。使用JMeter模擬并發(fā)訪問web應(yīng)用,從Pod擴(kuò)容副本數(shù)和平均響應(yīng)時(shí)間,兩個(gè)方面對比K8s原有HPA伸縮與GM伸縮,結(jié)果如圖3所示。
由圖可以看出,GM伸縮策略在擴(kuò)容副本數(shù)量,請求的平均響應(yīng)時(shí)間均高于傳統(tǒng)的HPA伸縮機(jī)制。
4結(jié)論
本文通過分析K8s自動(dòng)伸縮策略,針對原有策略Pod初始化時(shí)間導(dǎo)致的響應(yīng)延遲問題,提出一種預(yù)測式的伸縮方案,提前進(jìn)行擴(kuò)容,并通過響應(yīng)式伸縮彌補(bǔ)預(yù)測不準(zhǔn)確時(shí)的不足。實(shí)驗(yàn)表明本文伸縮算法能有效改善響應(yīng)延遲問題,降低響應(yīng)時(shí)間,提高應(yīng)用服務(wù)質(zhì)量。
參考文獻(xiàn):
[1] Morenovozmediano R , Montero, Rubén S, ?Llorente I M . Proceedings of the 1st workshop on Automated control for datacenters and clouds – ACDC
'09. ?2009.
[2] Lim H C , ?Babu S , ?Chase J S . [ACM Press Proceeding of the 7th international conference - Washington, DC, USA (2010.06.07-2010.06.11)] Proceeding of the 7th international conference on Autonomic computing - ICAC \"10 - Automated control for elastic storage[C]// International Conference on Autonomic Computing. DBLP, 2010:1.
[3] Al-Haidari F , ?Sqalli M , ?Salah K . Impact of CPU Utilization Thresholds and Scaling Size on Autoscaling Cloud Resources[C]// IEEE International Conference on Cloud Computing Technology & Science. IEEE, 2014.
[4] Iqbal W , ?Dailey M , ?Carrera D . SLA-Driven Adaptive Resource Management for Web Applications on a Heterogeneous Compute Cloud[C]// IEEE International Conference on Cloud Computing. Springer, Berlin, Heidelberg, 2009.
1463500511259