張文輝,王子辰
(桂林電子科技大學(xué) 計(jì)算機(jī)與信息安全學(xué)院,桂林 541004)
近幾年,隨著云計(jì)算技術(shù)的發(fā)展,在云上部署應(yīng)用服務(wù)有利于降低成本和提高效率,但卻引出了資源利用率低、部署和重啟應(yīng)用服務(wù)等待時(shí)間長(zhǎng)等問題,而Docker 作為容器技術(shù)的代表,為應(yīng)用程序提供了更加輕量級(jí)和易于部署的解決方案,如今已是云計(jì)算領(lǐng)域的熱點(diǎn).
Kubernetes是容器編排技術(shù)的代表,是Google 公司Borg 項(xiàng)目的一個(gè)開源版本,它基于Docker 容器技術(shù),目的是實(shí)現(xiàn)資源管理的自動(dòng)化,以及跨多個(gè)數(shù)據(jù)中心的資源利用率最大化.Kubernetes 具有完備的集群管理能力,包括多層次的安全防護(hù)和準(zhǔn)入機(jī)制、多租戶應(yīng)用支撐能力、透明的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)機(jī)制、可擴(kuò)展的資源調(diào)度機(jī)制等[1].在Kubernetes 集群中,以Pod 作為資源調(diào)度的基本單位,而Pod中可以容納多個(gè)容器,集群根據(jù)其生命周期進(jìn)行管理,滿足了產(chǎn)品內(nèi)運(yùn)行程序的需求,Kubernetes 已成為大規(guī)模容器化應(yīng)用程序部署的事實(shí)標(biāo)準(zhǔn)[2].近年來,大多數(shù)互聯(lián)網(wǎng)公司的相關(guān)技術(shù)人員相繼把Kubernetes 運(yùn)行在重要業(yè)務(wù)上,同時(shí)越來越多的微服務(wù)也使用Kubernetes 進(jìn)行部署和管理.
Kubernetes 資源調(diào)度是其核心的模塊,不合理的資源調(diào)度策略會(huì)造成云平臺(tái)整體資源利用率低,用戶的部署請(qǐng)求得不到快速響應(yīng),服務(wù)質(zhì)量下降,同時(shí)也提高服務(wù)商的軟硬件設(shè)施成本.
Kubernetes 調(diào)度策略首先根據(jù)用戶提交的Pod 應(yīng)用的最小資源需求過濾掉不符合要求的節(jié)點(diǎn),其次以節(jié)點(diǎn)剩余CPU和內(nèi)存的資源利用率為評(píng)分指標(biāo),對(duì)候選節(jié)點(diǎn)評(píng)分,選擇得分最高的節(jié)點(diǎn)進(jìn)行部署.該策略存在兩處不足:(1)只考慮了CPU和內(nèi)存兩種資源指標(biāo),無法滿足各異的應(yīng)用需求;(2)采用相同權(quán)重計(jì)算候選節(jié)點(diǎn)得分,易造成資源使用的過度傾斜.
關(guān)于Kubernetes 資源調(diào)度問題,已經(jīng)有學(xué)者在優(yōu)化節(jié)點(diǎn)負(fù)載、提高集群資源利用率和減少資源成本等方面做了大量研究.Menouer 等[3]在Docker Swarm中利用TOPSIS 多屬性決策方法結(jié)合Spread和Bin Packing原理優(yōu)化了多個(gè)資源指標(biāo)下容器的調(diào)度問題;El Haj Ahmed等[4]通過容器應(yīng)用的時(shí)間線和執(zhí)行的歷史信息來優(yōu)化容器應(yīng)用的部署;Imdoukh 等[5]提出了一種基于多目標(biāo)遺傳算法進(jìn)行優(yōu)化的調(diào)度算法MOGAS (manyobjective genetic algorithm scheduler),該調(diào)度算法與基于蟻群算法優(yōu)化的調(diào)度算法相比較效果更佳;Zhang等[6]通過結(jié)合蟻群算法和粒子群優(yōu)化算法改進(jìn)了Kubernetes 調(diào)度模型,不僅減少了總的資源成本和節(jié)點(diǎn)最大負(fù)載,也使得應(yīng)用部署更加平衡;孔德瑾等[7]提出一種基于資源利用率進(jìn)行指標(biāo)權(quán)重自學(xué)習(xí)的調(diào)度機(jī)制,提升了集群資源均衡度和資源綜合利用率;Li等[8]提出BDI (balanced-disk-IO-priority)算法來動(dòng)態(tài)調(diào)度容器應(yīng)用以改善節(jié)點(diǎn)間磁盤I/O 平衡,提出BCDI(balanced-CPU-disk-IO-priority)算法動(dòng)態(tài)調(diào)度容器應(yīng)用以解決單節(jié)點(diǎn)CPU和磁盤I/O 負(fù)載不平衡的問題;吳雙艷[9]通過灰色預(yù)測(cè)算法對(duì)資源負(fù)載進(jìn)行預(yù)測(cè),對(duì)容器云平臺(tái)彈性伸縮系統(tǒng)優(yōu)化來提高服務(wù)質(zhì)量;Dua 等[10]提出一種可供選擇的任務(wù)調(diào)度算法,為特定類型任務(wù)打上標(biāo)簽,并基于標(biāo)簽將任務(wù)遷移實(shí)現(xiàn)集群負(fù)載均衡;Zheng 等[11]提出一種基于Docker 集群的自定義Kubernetes 調(diào)度器調(diào)度策略,使用優(yōu)化的預(yù)選算法模型和優(yōu)選算法模型改進(jìn)Kubernetes 默認(rèn)調(diào)度策略,提高集群調(diào)度的公平性和調(diào)度效率.
雖然國內(nèi)外學(xué)者針對(duì)Kubernetes 資源調(diào)度的研究已經(jīng)取得了較多的成果,但在異構(gòu)環(huán)境下兼顧資源指標(biāo)權(quán)重和資源指標(biāo)本身都有些欠缺.針對(duì)此問題,本文主要在崔廣章等[12]、龔坤等[13]的基礎(chǔ)上,選擇CPU、內(nèi)存、帶寬、磁盤容量和IO 速率的實(shí)時(shí)資源利用率作為評(píng)價(jià)指標(biāo),并將基于層次分析法和熵權(quán)法得到的組合權(quán)重應(yīng)用到TOPSIS 多屬性決策算法中,致力于將Pod 應(yīng)用部署到最合適的節(jié)點(diǎn)上.
Kubernetes Scheduler是Kubernetes 集群的調(diào)度器,用于將用戶創(chuàng)建的Pod 按照特定的調(diào)度算法和調(diào)度策略綁定到集群中某個(gè)合適節(jié)點(diǎn)上.其調(diào)度過程可以分為兩個(gè)階段,分別是預(yù)選和優(yōu)選階段.
預(yù)選階段主要是根據(jù)用戶提交Pod 應(yīng)用的最小資源需求過濾掉不滿足需求的節(jié)點(diǎn),Kubernetes 也提供了多種預(yù)選策略供用戶選擇,如PodFitsResources、PodsFitsPorts 等.
優(yōu)選階段主要是在預(yù)選階段的基礎(chǔ)上,采集剩下節(jié)點(diǎn)上CPU和內(nèi)存的空閑利用率進(jìn)行評(píng)分,選擇評(píng)分最高的節(jié)點(diǎn)作為部署節(jié)點(diǎn),最后將Pod 應(yīng)用綁定到該節(jié)點(diǎn)上.同樣的,Kubernetes 也提供了幾種優(yōu)選策略:
1)LeastRequestedPriority,該策略用于從候選節(jié)點(diǎn)中選出資源消耗最小的節(jié)點(diǎn),即CPU和內(nèi)存空閑資源越多,評(píng)分越高,其計(jì)算公式如下:
2)BalancedResourceAllocation,該策略用于從候選節(jié)點(diǎn)中選出CPU和內(nèi)存使用率最均衡的節(jié)點(diǎn),即CPU和內(nèi)存使用率越接近,評(píng)分越高,其計(jì)算公式如下:
上述兩種策略,均只考慮了CPU和內(nèi)存,且策略中CPU和內(nèi)存利用率是由Pod 應(yīng)用的需求來衡量調(diào)度的優(yōu)先級(jí)的,無法準(zhǔn)確反映節(jié)點(diǎn)實(shí)際資源使用情況,也會(huì)影響節(jié)點(diǎn)的整體資源均衡性.
3)SelectorSpreading,該策略將相同標(biāo)簽選擇器選取的Pod 應(yīng)用盡可能散開部署到多個(gè)節(jié)點(diǎn)上,節(jié)點(diǎn)上該標(biāo)簽選擇器匹配的Pod 應(yīng)用數(shù)目越少,則該節(jié)點(diǎn)的評(píng)分越高,使用標(biāo)簽選擇器的資源對(duì)象有:Service,Replication Controller,ReplicaSet 等.
此外,調(diào)度策略還包括NodePerferAvoidPods,InterPodAffinity,NodeAffinity,TaintToleration 等.
上述公式中,Scpu和Smem分別表示節(jié)點(diǎn)上總的CPU和內(nèi)存容量,而Ncpu和Nmem分別表示節(jié)點(diǎn)上已被使用的CPU和內(nèi)存的容量加上將要部署的Pod 應(yīng)用的CPU和內(nèi)存的容量之和.
由于Kubernetes 默認(rèn)調(diào)度算法僅僅考慮CPU和內(nèi)存,沒有考慮到帶寬、IO 速率、磁盤容量等資源的需求,無法對(duì)帶寬敏感型、IO 速率敏感型等Pod 應(yīng)用進(jìn)行合理的資源調(diào)度,同時(shí)兩個(gè)評(píng)分指標(biāo)都采用相同權(quán)重,無法滿足Pod 應(yīng)用各異的資源需求,當(dāng)Pod 應(yīng)用部署的數(shù)量逐步增加時(shí),可能會(huì)造成其他指標(biāo)如帶寬、IO 速率等資源過度浪費(fèi).
在評(píng)價(jià)指標(biāo)方面,考慮到評(píng)價(jià)指標(biāo)應(yīng)該有效且有代表性,因此本文選擇CPU、內(nèi)存、帶寬、磁盤容量、IO 速率作為評(píng)價(jià)指標(biāo).
在權(quán)重方面,本文利用熵權(quán)法[14]對(duì)層次分析法[15]得到的主觀權(quán)重進(jìn)一步優(yōu)化,有效避免了層次分析法權(quán)重的主觀性和熵權(quán)法權(quán)重的客觀性.
最后將組合權(quán)重應(yīng)用到TOPSIS[16]多屬性決策方法中,來計(jì)算Pod 應(yīng)用調(diào)度方案解和理想最優(yōu)解及最劣解之間的距離,通過理想貼合度的大小排序,為Pod 應(yīng)用選擇最合適的節(jié)點(diǎn)進(jìn)行部署.
本文主要采集兩種資源信息:
(1)節(jié)點(diǎn)當(dāng)前的各個(gè)資源指標(biāo)的資源利用率.
(2)已部署的Pod 應(yīng)用在節(jié)點(diǎn)上占用的資源份額.
通過在集群中每個(gè)節(jié)點(diǎn)上部署Proxy 監(jiān)控代理,用于采集上述兩種資源信息,具體流程如圖1所示.首先準(zhǔn)備兩個(gè)數(shù)據(jù)庫,分別用于存儲(chǔ)監(jiān)控節(jié)點(diǎn)的資源利用率和Pod的CPU、內(nèi)存、帶寬、磁盤、IO 速率占用率信息.在控制器模塊逐個(gè)分析節(jié)點(diǎn)Node 標(biāo)識(shí)和Pod 應(yīng)用標(biāo)識(shí),控制器可獲取到Proxy 代理的IP、端口,向Proxy 代理發(fā)送監(jiān)控命令,之后采集實(shí)驗(yàn)需要的監(jiān)控信息存放到對(duì)應(yīng)的數(shù)據(jù)庫中.
圖1 采集資源利用率
層次分析法是一種使人們的思維過程和主觀判斷實(shí)現(xiàn)規(guī)劃化的方法,可以使因素的不確定性得到很大程度降低,不僅簡(jiǎn)化了系統(tǒng)分析與計(jì)算工作,而且有助于決策者保持其思維過程和決策過程原則的一致性,是一種確定權(quán)重的科學(xué)方法,其計(jì)算步驟如下:
Step 1.構(gòu)造資源指標(biāo)判斷矩陣
假設(shè)集群中有m個(gè)資源指標(biāo),通過兩兩比較確定指標(biāo)重要程度,進(jìn)而得出判斷矩陣A=(aij)m×m,i=1,2,…,m;j=1,2,…,m,重要程度的定義如表1所示.
表1 相對(duì)重要程度表
矩陣中,m表示資源指標(biāo)的個(gè)數(shù),aij表示相對(duì)于第j個(gè)資源指標(biāo),第i個(gè)資源指標(biāo)的重要程度,且aii=1.
本文以5 種資源指標(biāo)CPU,內(nèi)存,帶寬,磁盤,IO速率為基礎(chǔ),給出判斷矩陣如下,選取理由如表2所示.
表2 部分指標(biāo)對(duì)比結(jié)果
Step 2.一致性檢驗(yàn)
判斷矩陣客觀反映了不同資源指標(biāo)之間的相對(duì)重要性,但是并不能保證每個(gè)判斷矩陣都是一致的.例如,指標(biāo)A1比指標(biāo)A2重要,指標(biāo)A2比指標(biāo)A3重要,那么指標(biāo)A3比指標(biāo)A1重要就不合理,因此需要通過計(jì)算一致性檢驗(yàn)CI(consistency index)和一致性比例CR(consistency ratio)來衡量判斷矩陣是否完全一致,具體計(jì)算公式如下:
其中,λmax為判斷矩陣的最大特征根,m為矩陣的階數(shù),RI為平均一致性指標(biāo),其取值如表3所示.若CR<0.1,則通過一致性檢驗(yàn),否則判斷矩陣需要修正.
表3 平均隨機(jī)一致性指標(biāo)
Step 3.計(jì)算資源指標(biāo)權(quán)重
本文選擇常用特征值法來計(jì)算權(quán)重,只需要計(jì)算符合A·W=λmax·W的特征向量,然后Wλmax將歸一化,即可得到權(quán)重wAj,具體權(quán)重信息如表4所示.
表4 AHP 資源指標(biāo)權(quán)重
熵權(quán)法基本思路是根據(jù)指標(biāo)變異性的大小來確定客觀權(quán)重.該方法可以深刻反映出指標(biāo)的區(qū)分能力,若某個(gè)指標(biāo)的信息熵越小,表明指標(biāo)值的變異程度越大,提供的信息量越多,在綜合評(píng)價(jià)中所能起到的作用也越大,其權(quán)重也就越大.其計(jì)算步驟如下.
Step 1.數(shù)據(jù)預(yù)處理
假設(shè)集群中有n個(gè)節(jié)點(diǎn),m個(gè)資源指標(biāo),通過監(jiān)控代理Proxy 采集到的資源利用率的實(shí)時(shí)數(shù)據(jù),構(gòu)造矩陣xij表示第i個(gè)節(jié)點(diǎn)上第j個(gè)資源指標(biāo)的資源利用率.
Step 2.資源指標(biāo)歸一化處理
考慮到每個(gè)資源指標(biāo)的計(jì)量單位不同,有必要在計(jì)算綜合資源指標(biāo)前,進(jìn)行標(biāo)準(zhǔn)化處理,即把資源指標(biāo)的絕對(duì)值轉(zhuǎn)化為相對(duì)值.
正向型資源指標(biāo)歸一化,用于處理效益型決策參數(shù),這類決策參數(shù)的特點(diǎn)是值越大效果越好,其計(jì)算公式如下:
負(fù)向型資源指標(biāo)歸一化,用于處理成本型決策參數(shù),這類決策參數(shù)的特點(diǎn)是值越小效果越好,其計(jì)算公式如下:
Step 3.計(jì)算第j個(gè)資源指標(biāo)下第i個(gè)節(jié)點(diǎn)的值所占該資源指標(biāo)的比重Pij,i=1,2,…,n;j=1,2,…,m.
Step 4.計(jì)算第j個(gè)資源指標(biāo)的熵值ej,j=1,2,…,m.
其中,k=1/In(n)>0,滿足ej≥0.
Step 5.計(jì)算資源指標(biāo)的差異系數(shù)dj,j=1,2,…,m.
Step 6.計(jì)算各指標(biāo)的權(quán)重wEj,j=1,2,…,m.
將熵權(quán)法得到的權(quán)重與層次分析法得到的權(quán)重結(jié)合,用于避免層次分析法的主觀影響和熵權(quán)法的客觀影響,其計(jì)算公式如下:
其中,wj為第j個(gè)資源指標(biāo)的組合權(quán)重,wAj和wEj分別表示通過層次分析法和熵權(quán)法得到的第j個(gè)資源指標(biāo)的權(quán)重.
以表4得到的AHP 權(quán)重為基礎(chǔ),監(jiān)控代理Proxy采集到的某個(gè)時(shí)間段的5 種資源指標(biāo)的實(shí)時(shí)利用率如表5所示,根據(jù)表5的數(shù)據(jù)計(jì)算出熵權(quán)權(quán)重,最后根據(jù)式(14)計(jì)算得到組合權(quán)重,具體權(quán)重信息如表6所示.
表5 資源實(shí)時(shí)利用率 (%)
表6 詳細(xì)權(quán)重信息
逼近理想解排序方法(TOPSIS)是一種有效的多屬性決策方案,通過從歸一化的數(shù)據(jù)矩陣中構(gòu)造出決策問題的正負(fù)理想解,計(jì)算出方案與正負(fù)理想解的距離,最終得到貼合度作為評(píng)價(jià)方案的優(yōu)劣依據(jù).其計(jì)算步驟如下.
Step 1.構(gòu)造決策矩陣
假設(shè)集群中有n個(gè)節(jié)點(diǎn),m個(gè)資源指標(biāo),通過監(jiān)控代理Proxy 采集到的資源利用率的實(shí)時(shí)數(shù)據(jù)加上Pod部署所占用的資源利用率,構(gòu)造決策矩陣i=1,2,…,n;j=1,2,…,m.
其中,xij表示第i個(gè)節(jié)點(diǎn)上第j個(gè)資源指標(biāo)的資源利用率.
Step 2.歸一化決策矩陣
采用極差標(biāo)準(zhǔn)化方法對(duì)決策矩陣進(jìn)行歸一化處理,目的是消除決策參數(shù)不同量綱之間的影響.
Step 3.構(gòu)造加權(quán)決策矩陣
各異的Pod 應(yīng)用對(duì)節(jié)點(diǎn)資源指標(biāo)的需求敏感程度不同.大體上可以分為內(nèi)存傾向型、CPU 傾向型、IO速率傾向型,帶寬傾向型等等,若是每個(gè)資源指標(biāo)都采用相同權(quán)重,無法滿足各異需求的Pod 應(yīng)用,因此有必要分別為節(jié)點(diǎn)的資源指標(biāo)設(shè)置不同的權(quán)重.
基于此,在考慮資源指標(biāo)的差異性,和避免了層次分析法人為的主觀影響和熵權(quán)法帶來的客觀影響下,本文通過結(jié)合層次分析法與熵權(quán)法得到組合權(quán)重,并應(yīng)用到?jīng)Q策矩陣中,構(gòu)造了加權(quán)決策矩陣i=1,2,…,n;j=1,2,…,m.
其中,wj是第j個(gè)資源指標(biāo)的組合權(quán)重.
Step 4.計(jì)算正負(fù)理想解
其中,Z+表示加權(quán)決策矩陣的正理想解,由所有候選節(jié)點(diǎn)上每種資源指標(biāo)參數(shù)的最大值構(gòu)成;Z-表示加權(quán)決策矩陣的負(fù)理想解,由所有候選節(jié)點(diǎn)上每種資源指標(biāo)參數(shù)的最小值構(gòu)成.
Step 5.計(jì)算每個(gè)候選節(jié)點(diǎn)到正、負(fù)理想解的距離
其中,D+和D-分別代表各候選節(jié)點(diǎn)到正負(fù)理想解的歐式距離.
Step 6.計(jì)算每個(gè)候選節(jié)點(diǎn)與最優(yōu)候選節(jié)點(diǎn)的相對(duì)貼合度Si
其中,相對(duì)貼合度Si越大,說明該候選節(jié)點(diǎn)越適合當(dāng)前需要部署的Pod 應(yīng)用.
以表5和表6的數(shù)據(jù)為基礎(chǔ),結(jié)合TOPSIS 多屬性決策算法可以得到相對(duì)貼合度S,如表7所示,可以看出節(jié)點(diǎn)1的相對(duì)貼合度S 最大,因此將Pod 應(yīng)用部署到節(jié)點(diǎn)1 最合適.
表7 相對(duì)貼合度
為測(cè)試本文提出的Kubernetes 調(diào)度算法的性能,進(jìn)行實(shí)驗(yàn)驗(yàn)證.所有實(shí)驗(yàn)均由PyCharm 2020.2 編程實(shí)現(xiàn),并基于平臺(tái):Windows 10,Intel(R) Core(TM) i7-8565U CPU 1.80 GHz,16 GB 內(nèi)存.
在仿真環(huán)境下,模擬一個(gè)包含60 個(gè)節(jié)點(diǎn)的Kubernetes 集群,集群中節(jié)點(diǎn)分為3 種類型,每種類型20 個(gè)來模擬異構(gòu)的環(huán)境,節(jié)點(diǎn)具體信息如表8所示.
表8 節(jié)點(diǎn)資源信息
同樣的,鑒于容器應(yīng)用資源多樣化的需求,本文按照CPU 敏感型、內(nèi)存敏感型、帶寬敏感型、存儲(chǔ)敏感型、IO 速率敏感型以及無傾向類型6 類容器應(yīng)用構(gòu)造了Pod 資源需求,表9為部分Pod 資源需求.
表9 部分Pod 資源需求表
假設(shè)Kubernetes 集群中有n個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)上有m種資源.資源的實(shí)時(shí)利用率是通過監(jiān)控代理Proxy 采集獲取得到的.U(i,j) 表示節(jié)點(diǎn)i上資源j的資源利用率;Uavg(i) 表示節(jié)點(diǎn)i上各個(gè)資源利用率總和的平均值;S(i) 表示節(jié)點(diǎn)i上各個(gè)資源利用率的標(biāo)準(zhǔn)差,即資源失衡度;Savg表示所有節(jié)點(diǎn)的平均資源失衡度.Savg的值越小,代表集群中各個(gè)資源的利用率越平衡,就不容易出現(xiàn)資源傾斜,如此就可以部署更多的Pod 應(yīng)用,具體計(jì)算公式如下:
在上述Kubernetes 集群中,分別采用Kubernetes的LeastRequestedPriority (LRP)策略與BalancedResource-Allocation (BRA)策略和本文提出的組合權(quán)重TOPSIS調(diào)度算法(CWT),從資源平衡度、CPU、內(nèi)存、帶寬、IO 速率角度來對(duì)比3 種算法的表現(xiàn).
1)集群資源失衡度
集群失衡度變化曲線如圖3所示,當(dāng)Pod 數(shù)量小于1 200 時(shí),此時(shí)集群負(fù)荷相對(duì)較低,LRP和BRA 策略與CWT 算法的資源失衡度相差不大,但隨著部署的Pod 應(yīng)用數(shù)量越來越多,可以很明顯的發(fā)現(xiàn)CWT 算法開始發(fā)揮作用,它的資源失衡度明顯好于LRA 策略.
在集群資源整體快達(dá)到飽和時(shí),CWT 算法優(yōu)于BRA 策略.這是由于CWT 算法不僅考慮了集群節(jié)點(diǎn)的5 種資源指標(biāo),還分別考慮了各個(gè)資源指標(biāo)的權(quán)重情況,這就降低了集群中單個(gè)節(jié)點(diǎn)出現(xiàn)單個(gè)資源用盡而其他資源大量剩余的可能.尤其是在集群資源整體飽和的情況下,CWT 算法的資源失衡度比LRA 策略整體下降18%,比BRA 策略整體下降7.7%,這說明CWT 算法在集群資源飽和的情況下可有效的調(diào)節(jié)集群資源平衡度.
2)CPU、內(nèi)存資源利用率
圖3和圖4反映了在Pod 應(yīng)用數(shù)量為7 200 時(shí),CWT 算法、LRP 策略和BRA 策略下各個(gè)節(jié)點(diǎn)的CPU和內(nèi)存資源利用率的情況.在BRA 策略下,CPU 資源利用率和內(nèi)存資源利用率好于CWT 算法,且遠(yuǎn)遠(yuǎn)好于LRP 策略,這是由于BRA 策略會(huì)選取CPU和內(nèi)存資源使用率最接近的節(jié)點(diǎn)進(jìn)行部署.而在LRP策略下,有3 個(gè)節(jié)點(diǎn)CPU 資源已經(jīng)飽和,1 個(gè)節(jié)點(diǎn)的內(nèi)存資源已經(jīng)飽和,飽和率達(dá)到6.7%,這意味著這4 個(gè)節(jié)點(diǎn)上所有Pod 應(yīng)用的處在資源受到限制的環(huán)境,嚴(yán)重影響了集群的整體健康.在CWT 算法下,CPU和內(nèi)存的資源利用率波動(dòng)比BRA 策略稍微大一些,這是由于CWT 算法綜合考慮了5 種資源指標(biāo),相較于BRA策略只考慮CPU和內(nèi)存兩種資源指標(biāo),CWT 算法則考慮的更加全面,更加能適應(yīng)實(shí)際生產(chǎn)環(huán)境的需求.
圖2 集群資源失衡度變化
圖3 不同策略下的CPU 利用率
圖4 不同策略下的內(nèi)存利用率
3)帶寬、IO 速率資源利用率
圖5和圖6反映了在Pod 應(yīng)用數(shù)量為7 200 時(shí),CWT 算法、LRP 策略和BRA 策略下各個(gè)節(jié)點(diǎn)的帶寬和IO 速率資源利用率的情況.由于LRP 策略與BRA策略只考慮CPU和內(nèi)存,未考慮帶寬和IO 速率等因素,隨著Pod 應(yīng)用數(shù)量增加,在這兩種策略下資源失衡度上升,集群中部分節(jié)點(diǎn)出現(xiàn)資源傾斜,尤其是帶寬和IO 資源利用率,很明顯可以看出集群中節(jié)點(diǎn)之間利用率波動(dòng)較大.
圖5 不同策略下的帶寬利用率
圖6 不同策略下的IO 利用率
在LRP 策略下,帶寬利用率最大的節(jié)點(diǎn)與利用率最小的節(jié)點(diǎn)相差48%,IO 資源利用率最大的節(jié)點(diǎn)與利用率最小的節(jié)點(diǎn)相差24%,而在BRA 策略帶寬利用率最大的節(jié)點(diǎn)與利用率最小的節(jié)點(diǎn)相差47%,IO 資源利用率最大的節(jié)點(diǎn)與利用率最小的節(jié)點(diǎn)相差41%,甚至有多個(gè)節(jié)點(diǎn)的帶寬和IO 資源利用率已超過100%,這說明這些節(jié)點(diǎn)的帶寬和IO 資源已經(jīng)完全飽和,LRP 策略下飽和率達(dá)到25%,BRA 策略下飽和度達(dá)到18.3%.若是帶寬和IO 速率敏感型的Pod 應(yīng)用被部署在這些帶寬和IO 資源飽和的節(jié)點(diǎn)上,會(huì)帶來網(wǎng)絡(luò)和IO 讀寫的擁堵.
在CWT 算法下,全部節(jié)點(diǎn)的帶寬和IO 資源利用率都在75%到95%的區(qū)間內(nèi)震蕩,沒有出現(xiàn)帶寬資源利用率超過100%的情況,相較于LRP 策略和BRA 策略,CWT 算法更加保障了集群的帶寬穩(wěn)定.
本文針對(duì)Kubernetes 默認(rèn)調(diào)度算法僅考慮CPU、內(nèi)存兩種資源指標(biāo),且對(duì)需求各異的Pod 應(yīng)用采用相同權(quán)重的調(diào)度策略進(jìn)行了改進(jìn),通過增加帶寬、磁盤、IO 速率3 項(xiàng)指標(biāo),結(jié)合層次分析法與熵權(quán)法得到每個(gè)資源指標(biāo)的組合權(quán)重,并應(yīng)用到TOPSIS 多屬性決策方法中,為Pod 應(yīng)用選擇合適的節(jié)點(diǎn)進(jìn)行部署,有效提高了集群整體的資源平衡度,避免了集群中節(jié)點(diǎn)上單個(gè)資源耗盡而其他資源尚有剩余的情況,通過實(shí)驗(yàn)驗(yàn)證,證明了組合權(quán)重TOPSIS 調(diào)度算法的有效性和合理性.下一階段將考慮集群的動(dòng)態(tài)調(diào)度與多租戶情況相結(jié)合,使得集群資源調(diào)度更加高效,集群資源更加平衡,集群資源利用率更高.