楊津 蔣朝惠
摘要:文章以基于阿里云的Kubernetes容器云平臺設(shè)計(jì)與實(shí)現(xiàn)為研究對象,首先對建立基于阿里云的Kubernetes容器云平臺的意義進(jìn)行了闡述分析,隨后分析了基于阿里云的Kubernetes容器云平臺框架建立過程,最后著重對云控制管理器與容器存儲模塊設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了研究分析,希望能夠?yàn)橄嚓P(guān)研究提供一定的參考。
關(guān)鍵詞:Kubernetes容器云平臺;容器存儲模塊;云控制管理器;設(shè)計(jì)與實(shí)現(xiàn)
前言:當(dāng)前很多企業(yè)在網(wǎng)絡(luò)建設(shè)方面為節(jié)約硬件成本,均選擇采用當(dāng)前比較成熟的Kubernetes容器云平臺代替網(wǎng)絡(luò)硬件設(shè)施。但該平臺無法存儲后端,也不能對外部網(wǎng)關(guān)進(jìn)行管理,因此還需要對此做進(jìn)一步的設(shè)計(jì)與完善,促使阿里云Kubernetes容器云平臺發(fā)揮出應(yīng)有的作用價(jià)值,有效降低企業(yè)的網(wǎng)絡(luò)建設(shè)成本,推動(dòng)企業(yè)未來實(shí)現(xiàn)更好地發(fā)展。
一、建立基于阿里云的Kubernetes容器云平臺的意義
在互聯(lián)網(wǎng)信息時(shí)代下,云計(jì)算、大數(shù)據(jù)技術(shù)發(fā)展也逐漸日趨成熟。一些企業(yè)在實(shí)際經(jīng)營時(shí),為降低自身網(wǎng)絡(luò)運(yùn)營成本,選擇采用“云端”替代企業(yè)網(wǎng)絡(luò)硬件設(shè)施。在這一背景下,阿里云Kubernetes容器云平臺得到了廣泛的應(yīng)用。但該平臺本身無法存儲后端,也不能對外部網(wǎng)關(guān)進(jìn)行管理,為實(shí)現(xiàn)上述功能,需要借助下層IAAS平臺實(shí)現(xiàn)。而達(dá)到這一目的,用于還需要對Kubernetes進(jìn)行IAAS層改造?;诖耍仨氁訌?qiáng)基于阿里云的Kubernetes容器云平臺的構(gòu)建,才能夠更好地滿足企業(yè)用戶實(shí)際云計(jì)算應(yīng)用需求。
二、基于阿里云的Kubernetes容器云平臺框架搭建
在本次基于阿里云的Kubernetes容器云平臺框架搭建中,主要包括以下幾大功能模塊:(1)基礎(chǔ)設(shè)施平臺集成模塊。該模塊主要用于實(shí)現(xiàn)IAAS層服務(wù)功能,該模塊主要包括兩大組成部分:①云控制管理器模塊。該管理器一方面能夠針對Kubernetes設(shè)置外部負(fù)載服務(wù),專門設(shè)置對應(yīng)的IAAS層平臺的負(fù)載均衡服務(wù)。另一方面,則能夠立足Kubernetes 集群運(yùn)行過程,從IAAS平臺中獲得相應(yīng)節(jié)點(diǎn)虛擬機(jī)信息,然后將該信息同步至Kubernetes節(jié)點(diǎn)中來,從而有效確保集群節(jié)點(diǎn)的一致性。②容器存儲模塊。該模塊能夠與組件Kube-apiserver進(jìn)行通信,從中獲取Kubernetes集群數(shù)據(jù)卷的狀態(tài),以此為依據(jù),實(shí)現(xiàn)對該數(shù)據(jù)卷生命周期的管理。
(2)容器云平臺資源彈性伸縮模塊。該模塊主要負(fù)責(zé)對Kubernetes集群資源配置進(jìn)行優(yōu)化。在原Kubernetes系統(tǒng)中,只能對應(yīng)用層資源進(jìn)行彈性伸縮處理,且策略單一。為改善這一問題,文章從應(yīng)用與集群兩方面入手,完善了平臺資源管理體系。首先,在資源彈性伸縮器的幫助下,以集群動(dòng)態(tài)規(guī)模為依據(jù),來對應(yīng)用副本的數(shù)量進(jìn)行靈活調(diào)整。如此一來,既能夠確保應(yīng)用有著充足的資源,承載自身工作負(fù)載。與此同時(shí),還能夠提供資源利用率,防止發(fā)生浪費(fèi)問題。而對集群資源彈性伸縮器來說,則是結(jié)合集群內(nèi)所有應(yīng)用的總資源實(shí)際使用情況,實(shí)現(xiàn)對其動(dòng)態(tài)規(guī)模的靈活調(diào)整。上述兩種資源彈性伸縮器,具有遞進(jìn)關(guān)系,從單一的應(yīng)用資源擴(kuò)展能夠“升級”至集群應(yīng)用資源擴(kuò)展,因此資源管理體系將會更加完善。
(3)多集群跨可用區(qū)管理模塊。該模塊主要負(fù)責(zé)對多個(gè)Kubernetes集群進(jìn)行統(tǒng)一管理,同時(shí)還能夠橫跨多個(gè)可用區(qū),實(shí)現(xiàn)統(tǒng)一的部署與管理工作,最終能夠?yàn)橛脩籼峁o差別的服務(wù)。
三、基于阿里云的Kubernetes容器云與IAAS層集成模塊設(shè)計(jì)與實(shí)現(xiàn)
文章本次主要對云控制管理器模塊與容器存儲模塊設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行分析:
(一)云控制管理器設(shè)計(jì)與實(shí)現(xiàn)
通過上文敘述可知,在云控制管理器實(shí)際運(yùn)行時(shí),主要負(fù)責(zé)管理Kubernetes集群節(jié)點(diǎn)與設(shè)置外部均衡負(fù)載服務(wù)。由于上述兩種功能彼此獨(dú)立,因此在云控制管理器中,可以采用兩個(gè)子控制管理器,對上述兩種功能進(jìn)行分開管理。
首先,在節(jié)點(diǎn)控制器實(shí)現(xiàn)方面,node-controller控制器主要負(fù)責(zé)Kubernetes集群節(jié)點(diǎn)的管理,主要管理內(nèi)容是同步Kubernetes集群節(jié)點(diǎn)以及IAAS云提供商的虛擬狀態(tài)信息。在進(jìn)行節(jié)點(diǎn)初始化的過程中,node-controller控制器在IAAS API的幫助下,能夠獲取虛擬節(jié)點(diǎn)信息,然后再將其同步至Kubernetes中。在Kubernetes中,如果節(jié)點(diǎn)存在不正常的問題,便會觸發(fā)節(jié)點(diǎn)控制器。該控制器會向云提供者發(fā)出詢問,確定該節(jié)點(diǎn)的虛擬機(jī)是否能夠正常使用。例如在進(jìn)行Kubernetes集群節(jié)點(diǎn)初始化時(shí),node-controller控制器需要?dú)v經(jīng)以下流程:(1)node-controller控制器在Kube-apiserverd 幫助下,來對node對象進(jìn)行監(jiān)控。當(dāng)Kubernetes創(chuàng)建了新的節(jié)點(diǎn),node-controller控制器則會實(shí)時(shí)收到節(jié)點(diǎn)更新的通知信息。(2)隨后,node-controller控制器會調(diào)用阿里云API,獲取該節(jié)點(diǎn)所在位置虛擬機(jī)的詳細(xì)信息。(3)然后node-controller控制器會在Kube-apiserverd 幫助下,完成對node資源對象信息的更新。與此同時(shí),節(jié)點(diǎn)管理器還會調(diào)用云服務(wù)器ECS服務(wù),獲取阿里云的虛擬機(jī)狀態(tài)信息以及詳細(xì)信息。
另一方面,針對服務(wù)負(fù)載均衡控制器的實(shí)現(xiàn):Kubernetes在實(shí)際進(jìn)行服務(wù)創(chuàng)建時(shí),一般會為用戶提供外部負(fù)載均衡這一功能。但若沒有相應(yīng)的負(fù)載均衡控制器,該功能將無法生效。為實(shí)現(xiàn)這一功能,可采用loadbalanceer-controller控制器,該控制器能夠監(jiān)聽服務(wù)資源對象,當(dāng)外部負(fù)載均衡配置項(xiàng)出現(xiàn)了更新時(shí),該控制器便能夠調(diào)用IASS均衡服務(wù)API,完成Kubernetes外部負(fù)載均衡功能的配置。
(二)容器存儲模塊設(shè)計(jì)與實(shí)現(xiàn)
在容器存儲控制器中,provision—controller是一個(gè)持久化數(shù)據(jù)生產(chǎn)者(PV),可以以存儲類信息動(dòng)態(tài)為依據(jù),建立一個(gè)專門的PV,然后交由PVC使用。一般情況下,一個(gè)PV對應(yīng)一個(gè)阿里云盤存儲設(shè)備。如果在Kubernetes,存在的PV較少,無法滿足PVC要求,此時(shí)PVC則處于mismatch狀態(tài)。而在實(shí)際進(jìn)行provision—controller設(shè)計(jì)實(shí)現(xiàn)時(shí),需要?dú)v經(jīng)以下流程:(1)調(diào)用KubernetesAPI,實(shí)現(xiàn)對PVC資源對象的監(jiān)聽。(2)針對處于mismatch狀態(tài)的PVC,做好收集工作,并以PVC配置文件中指定的Storageclass為依據(jù),完成PVC的數(shù)據(jù)卷PV創(chuàng)建,最后將PV與PVC進(jìn)行綁定。(3)然后,將PV信息存儲至Volime cache中,再對其進(jìn)行遍歷操作,以此來判斷PV是否有對應(yīng)的PVC。(4)如果發(fā)現(xiàn)對應(yīng)的PVC已經(jīng)處于被刪除狀態(tài),那么需要調(diào)用delete函數(shù),將該P(yáng)V也刪除。除此之外,該存儲器還能夠結(jié)合不同的存儲后端,指定針對性的存儲介質(zhì)類型、磁盤容量等參數(shù)信息。在阿里云盤中,支持的存儲類型與磁盤容量如表1所示。
總結(jié):總而言之,基于阿里云的Kubernetes容器云平臺設(shè)計(jì)是一項(xiàng)較為復(fù)雜系統(tǒng)的過程,在實(shí)際建立的過程中,需要結(jié)合實(shí)際需求,做好Kubernetes容器云平臺框架的搭建,明確不同的功能模塊。最后,還需要結(jié)合不同的功能模塊,采取有效措施方法,做好針對性設(shè)計(jì)與實(shí)現(xiàn),才能更好地彰顯Kubernetes容器云平臺的作用價(jià)值,為廣大企業(yè)網(wǎng)絡(luò)設(shè)施建設(shè)提供更多的便利。
參考文獻(xiàn):
[1]韓沈鋼. 基于kubernetes的視頻處理軟件系統(tǒng)設(shè)計(jì)和開發(fā)[D]. 浙江工業(yè)大學(xué), 2020.
[2]翁湦元, 單杏花, 閻志遠(yuǎn),等. 基于Kubernetes的容器云平臺設(shè)計(jì)與實(shí)踐[J]. 鐵路計(jì)算機(jī)應(yīng)用, 2019, 028(012):49-53.
[3]鄭冰. 基于Kubernetes的企業(yè)級容器云平臺設(shè)計(jì)[J]. 數(shù)字技術(shù)與應(yīng)用, 2019(06):148+151.