本發(fā)明涉及物聯(lián)網(wǎng)云計(jì)算,具體地說涉及一種面向復(fù)雜場景的pod水平自動擴(kuò)縮容方法及計(jì)算機(jī)設(shè)備。
背景技術(shù):
1、k8s集群中的單個微服務(wù)以pod為單元部署在云主機(jī)上,每個微服務(wù)可以看作是一個單一變量的線性時不變控制系統(tǒng),其輸入是對微服務(wù)相關(guān)資源的調(diào)用,如使用其cpu、內(nèi)存資源進(jìn)行計(jì)算、存儲,通過其流量出入接口進(jìn)行數(shù)據(jù)傳輸,輸出為其cpu、內(nèi)存、網(wǎng)絡(luò)流量的使用率。若當(dāng)前微服務(wù)的cpu、內(nèi)存等資源的使用率較高,則需要進(jìn)行水平擴(kuò)容操作,即增加pod數(shù)量,保持各pod的資源利用率不高于合理范圍上限,以確保服務(wù)正常穩(wěn)定運(yùn)行;若當(dāng)前已有pod的cpu、內(nèi)存等資源的利用率低于合理范圍下限,則需要進(jìn)行pod水平縮容操作,減少pod個數(shù),以節(jié)約云資源,供有其他需要的微服務(wù)適用。
2、在現(xiàn)有技術(shù)中,除人工擴(kuò)縮容手段外,pod自動水平擴(kuò)縮容(或稱橫向擴(kuò)縮容)方式都是依賴k8s的hpa基于配置的擴(kuò)縮容策略觸發(fā)的,通常是達(dá)到擴(kuò)縮容觸發(fā)條件后,即刻開始逐步調(diào)整pod數(shù)量為配置中的設(shè)定值,缺少針對業(yè)務(wù)場景的處理需求變化趨勢來進(jìn)行自動、快速的調(diào)節(jié)策略。在簡單的業(yè)務(wù)場景下,業(yè)務(wù)請求一般變化頻率低、變化幅度小,因此對微服務(wù)計(jì)算、存儲、通信資源的消耗變化不大,配置類擴(kuò)容方式可以較好的滿足需求;但在面對復(fù)雜的物聯(lián)網(wǎng)業(yè)務(wù)場景時,因接入設(shè)備種類繁雜、協(xié)議各異,具有請求量高頻與低頻并存、并發(fā)量大、實(shí)時性要求高等特點(diǎn),則需要更高效、快速、穩(wěn)定的擴(kuò)縮容方法。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供的一種能夠?qū)ξ⒎?wù)pod水平擴(kuò)縮容需求進(jìn)行自動、快速、有效響應(yīng),實(shí)現(xiàn)云資源最大化利用和最小化浪費(fèi)的面向復(fù)雜場景的pod水平自動擴(kuò)縮容方法及計(jì)算機(jī)設(shè)備,可至少解決上述技術(shù)問題之一。
2、為了解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案:
3、一種面向復(fù)雜場景的pod水平自動擴(kuò)縮容方法,包括以下步驟:
4、s1:建立一套基于k8s集群的微服務(wù)pod資源利用模型a,微服務(wù)pod資源利用模型a包括水平擴(kuò)縮容控制器和微服務(wù),通過權(quán)重法綜合k8s集群的cpu、內(nèi)存、qps的使用率,得到微服務(wù)pod資源利用模型a的綜合平均指標(biāo)t;
5、s2:將微服務(wù)pod資源利用模型a看作一個控制系統(tǒng),設(shè)該控制系統(tǒng)中t的期望范圍為[texpmin,texpmax],取texp=(texpmin+texpmax)/2,texp作為該控制系統(tǒng)的輸入,設(shè)該控制系統(tǒng)中t的實(shí)際檢測值為tact,tact作為該控制系統(tǒng)的輸出,得到誤差e,e=texp-tact;
6、s3:基于微服務(wù)pod資源利用模型a,加入增量式pid控制器,建立一套結(jié)合增量式pid算法的微服務(wù)pod資源利用模型b;
7、s4:將微服務(wù)pod資源利用模型b看作一個閉環(huán)反饋控制系統(tǒng),在第k個采樣周期中,e(k)作為該閉環(huán)反饋控制系統(tǒng)的輸入,e(k)=texp-tact(k),增量式pid控制器的控制量為u(k),在微服務(wù)面向外部業(yè)務(wù)請求或復(fù)雜業(yè)務(wù)場景時,增量式pid控制器作用于水平擴(kuò)縮容控制器,增量式pid控制器的控制量增量為δu(k),水平擴(kuò)縮容控制器調(diào)整pod數(shù)量,輸出調(diào)整量被映射為pod的變化量,即pod數(shù)量的增量δn(k),得到δu(k)與δn(k)的映射關(guān)系:δn(k)=δu(k)%uscale;
8、s5:經(jīng)增量式pid算法調(diào)節(jié)后,通過權(quán)重法綜合k8s集群的cpu、內(nèi)存、qps的使用率,得到微服務(wù)pod資源利用模型b的綜合標(biāo)準(zhǔn)差指標(biāo)v,根據(jù)v取值大小,采取區(qū)間取值法對uscale的取值進(jìn)行分段式設(shè)定,這一周期的uscale取值參與下一周期的pod數(shù)量計(jì)算,反映pod的資源利用率分布情況,驗(yàn)證微服務(wù)pod資源利用模型b的控制效果。
9、進(jìn)一步地,所述s1中,k8s集群中某微服務(wù)ms初始啟動狀態(tài)下已分配n個pod,每個pod的配置為:cpu上限為cmax,內(nèi)存上限為mmax,qps上限為qmax,且第i個pod的cpu占用率為ci,內(nèi)存占用率為mi,qps使用率為qi;
10、其中:
11、ci=ciu/cmax,ciu為第i個pod的cpu實(shí)際使用量;
12、mi=miu/mmax,miu為第i個pod的內(nèi)存實(shí)際使用量;
13、qi=qiu/qmax,qiu為第i個pod的實(shí)際qps。
14、進(jìn)一步地,所述s1中,綜合平均指標(biāo)t=kc*avg(c)+km*avg(m)+kq*avg(q),kc、km、kq為各自的權(quán)重系數(shù),且kc+km+kq=1;
15、其中:
16、avg(c)為所有pod的cpu使用率的平均值;
17、avg(m)為所有pod的內(nèi)存使用率的平均值;
18、avg(q)為所有pod的qps使用率的平均值。
19、進(jìn)一步地,所述s4中,微服務(wù)pod資源利用模型b中,增量式pid算法調(diào)節(jié)滿足:
20、u(k)=kpe(k)+kisum(ei)+kd[e(k)-e(k-1)]
21、δu(k)=u(k)-u(k-1)
22、δu(k)=kp[e(k)-e(k-1)]+kie(k)+kd[e(k)2e(k-1)+e(k-2)]
23、δn(k)=δu(k)%uscale
24、nnew=n(k)+δn(k)
25、其中:
26、kp為比例項(xiàng)系數(shù),ki為積分項(xiàng)系數(shù),kd為微分項(xiàng)系數(shù);
27、k為采樣周期,k的取值應(yīng)當(dāng)大于hpa的擴(kuò)縮容冷卻時間;
28、u(k)為第k個采樣周期中的控制量;
29、δu(k)為第k個采樣周期中的控制量增量,受δumax與δumin上下限約束,δumax與δumin為控制量增量的最大和最小邊界;
30、uscale為根據(jù)經(jīng)驗(yàn)設(shè)定的比例因子,以適配控制量增量δu(k)到實(shí)際pod數(shù)量調(diào)整的映射;
31、δn(k)為pod數(shù)量的增量,通過δu(k)對uscale取模得出,為受約束的整數(shù),受δnmax與δnmin上下限約束,δnmax與δnmin為單次調(diào)整數(shù)量的最大和最小邊界,為防止資源使用的劇烈波動,完成擴(kuò)縮容的平穩(wěn)進(jìn)行;
32、nnew為調(diào)整后pod的數(shù)量,受nmax與nmin上下限約束,nmax與nmin為pod數(shù)量的最大和最小邊界,且nmin不能小于1。
33、進(jìn)一步地,所述s4中,在第k個采樣周期中,根據(jù)計(jì)算出的pod數(shù)量的增量δn(k),進(jìn)行微服務(wù)pod的水平擴(kuò)縮容操作,并在第(k+1)個采樣周期中,更新相應(yīng)的變量,并重新計(jì)算當(dāng)前采樣周期中的δn(k+1)。
34、進(jìn)一步地,所述s5中,關(guān)于uscale的取值,進(jìn)一步包括:
35、s51:結(jié)合t的期望范圍[texpmin,texpmax],若t的值在期望范圍內(nèi),則δn(k)=δu(k)%uscale的取值應(yīng)當(dāng)小于1,即不改變pod數(shù)量,否則,δn(k)=δu(k)%uscale的取值則應(yīng)當(dāng)不小于1,即增加或減少pod數(shù)量;
36、s52:綜合考慮k8s集群的cpu、內(nèi)存、qps使用率的分布情況,此處使用綜合標(biāo)準(zhǔn)差指標(biāo)v來衡量上述指標(biāo)的分布情況,v=dc*sd(c)+dm*sd(m)+dq*sd(q),dc、dm、dq為各自的權(quán)重系數(shù),且dc+dm+dq=1;
37、其中:
38、sd(c)為所有pod的cpu使用率的標(biāo)準(zhǔn)差;
39、sd(m)為所有pod的內(nèi)存使用率的標(biāo)準(zhǔn)差;
40、sd(q)為所有pod的qps使用率的標(biāo)準(zhǔn)差;
41、cpu、內(nèi)存、qps三者的取值范圍均為[0,1],推導(dǎo)可知sd(c)、sd(m)sd(q)的取值范圍均為[0,1],因此v的取值范圍亦為[0,1];
42、s53:根據(jù)v的取值來描述pod的資源利用率的分布差異情況:
43、v值越大,說明所有pod中的資源利用率分布越不均勻,此類情況下,需要向k8s集群發(fā)出告警信息,提示當(dāng)前的各pod節(jié)點(diǎn)接收的業(yè)務(wù)量不均衡;
44、v值接近于0,說明所有pod中的資源利用率分布基本一致,此時平均值更能反映出真實(shí)的資源利用情況;
45、s54:uscale取值與v之間存在正向關(guān)系,采取區(qū)間取值法設(shè)計(jì)出v-uscale分段式映射關(guān)系:
46、uscale=uscale1,v∈[0,0.1),分布基本均勻;
47、uscale=uscale2,v∈[0.1,0.3),分布一般均勻;
48、uscale=uscale3,v∈[0.3,1],分布極不均勻;
49、uscale1、uscale2、uscale3的具體取值必須根據(jù)具體業(yè)務(wù)場景和大量模擬實(shí)驗(yàn)來確定,且uscale1<uscale2<uscale3,即各pod之間的資源利用率差異越大,說明平均值無法很好反映出資源利用情況,越不應(yīng)當(dāng)進(jìn)行擴(kuò)縮容操作,此時將提示k8s集群管理節(jié)點(diǎn)優(yōu)化業(yè)務(wù)負(fù)載分配策略,確保業(yè)務(wù)請求能夠均勻的分配到不同的pod節(jié)點(diǎn)上,這一周期的uscale取值參與下一周期的pod數(shù)量計(jì)算。
50、一種計(jì)算機(jī)設(shè)備,包括存儲器和處理器,所述存儲器存儲有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被所述處理器執(zhí)行時,使得所述處理器執(zhí)行上述面向復(fù)雜場景的pod水平自動擴(kuò)縮容方法的步驟。
51、本發(fā)明的有益效果體現(xiàn)在:
52、1、綜合考慮了cpu、內(nèi)存、qps等主要微服務(wù)性能指標(biāo),在k8s資源管理領(lǐng)域內(nèi)融入了增量式pid控制算法,與k8s現(xiàn)有hpa結(jié)合,可提供更精細(xì)、更動態(tài)、更自適應(yīng)的自動、快速、有效的pod水平擴(kuò)縮容控制策略,能夠滿足復(fù)雜業(yè)務(wù)場景下的控制需求,具有動態(tài)響應(yīng)特性更好、零穩(wěn)態(tài)誤差控制、業(yè)務(wù)場景適應(yīng)性與靈活性更強(qiáng)、魯棒性和精確性更高、自適應(yīng)性更強(qiáng)等優(yōu)點(diǎn)。
53、2、特別適用于復(fù)雜業(yè)務(wù)場景下大規(guī)模微服務(wù)集群環(huán)境中的pod水平自動擴(kuò)縮容需求,既能滿足波峰、波谷的業(yè)務(wù)訪問需求,又能達(dá)到節(jié)約云資源、人力資源的效果,符合企業(yè)的綠色化低碳化策略。
54、3、在基于pod資源利用率計(jì)算水平擴(kuò)縮容數(shù)量時,考慮了pod資源利用率的分布差異情況,在各個pod的資源利用率比較均衡時,本發(fā)明的輸出更傾向于pod進(jìn)行水平擴(kuò)縮容,即更主動地對pod數(shù)量進(jìn)行變更,否則,則不傾向于變動pod數(shù)量,這種設(shè)計(jì)也與人工調(diào)整pod數(shù)量的標(biāo)準(zhǔn)相一致。