楊津 蔣朝惠

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