楊武
摘要:隨著云計(jì)算及數(shù)字化浪潮的推動(dòng),企業(yè)紛紛制定云戰(zhàn)略??紤]到業(yè)務(wù)災(zāi)備及避免云廠(chǎng)商鎖定等因素,企業(yè)已意識(shí)到不能把雞蛋放在同一個(gè)籃子里,因此選擇混合云來(lái)承載業(yè)務(wù)成為企業(yè)的最佳選擇。然而,基于虛擬機(jī)的跨云調(diào)度、遷移和彈性伸縮非常低效。因此,基于Docker容器的輕量特性,結(jié)合Kubernetes編排引擎,通過(guò)中央調(diào)度器管理異構(gòu)Kubernetes集群來(lái)構(gòu)建混合云平臺(tái)。利用容器技術(shù)構(gòu)建的混合云平臺(tái),為企業(yè)在業(yè)務(wù)災(zāi)備和彈性流量場(chǎng)景提供了技術(shù)保障。
關(guān)鍵詞:Docker Kubernetes;混合云
中圖分類(lèi)號(hào):TP311? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)11-0077-02
1研究背景
目前,互聯(lián)網(wǎng)企業(yè)已全面上云,金融、制造、零售等傳統(tǒng)行業(yè)也開(kāi)始全面擁抱互聯(lián)網(wǎng),部分業(yè)務(wù)也逐步遷移到云上。云計(jì)算主要基于計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)等基礎(chǔ)設(shè)施提供像水電一樣按需訂閱的資源,改變了傳統(tǒng)IT基礎(chǔ)設(shè)施的交付模式,提升了交付效率。云計(jì)算從部署方式分為公有云、私有云和混合云。其中,公有云是由云提供商提供IDC機(jī)房并自建計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)等資源池,企業(yè)或個(gè)人用戶(hù)只需要通過(guò)瀏覽器來(lái)申請(qǐng)購(gòu)買(mǎi)彈性的計(jì)算資源。私有云是由企業(yè)自己采購(gòu)服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)設(shè)備自建共享資源池,對(duì)企業(yè)內(nèi)部業(yè)務(wù)提供彈性的IT資源。混合云是融合了多家公有云、私有云等異構(gòu)云平臺(tái),主要兼顧公有云的無(wú)限彈性伸縮及私有云的數(shù)據(jù)安全性。基于企業(yè)所處行業(yè)的安全合規(guī)性要求及云提供商綁定風(fēng)險(xiǎn),企業(yè)已逐步采用混合云的架構(gòu)?;诨旌显萍軜?gòu)下,如何實(shí)現(xiàn)快速跨云部署、業(yè)務(wù)數(shù)據(jù)遷移和彈性流量訪(fǎng)問(wèn)等業(yè)務(wù)場(chǎng)景,是企業(yè)面臨的重大課題。本文基于當(dāng)前流行的云原生架構(gòu),利用Docker作為底層虛擬化技術(shù),結(jié)合Kubernetes容器編排平臺(tái),構(gòu)建了可以跨云管理業(yè)務(wù)和調(diào)度資源的平臺(tái),即混合云平臺(tái)。
2混合云基礎(chǔ)架構(gòu)設(shè)計(jì)
2.1混合云平臺(tái)架構(gòu)設(shè)計(jì)
主流公有云和私有云都會(huì)提供計(jì)算、存儲(chǔ)和網(wǎng)絡(luò)等基礎(chǔ)設(shè)施資源,并開(kāi)放對(duì)應(yīng)的API給用戶(hù)來(lái)調(diào)用。但各家云提供商提供的API形式各異,沒(méi)有統(tǒng)一標(biāo)準(zhǔn),給用戶(hù)適配異構(gòu)云帶來(lái)了煩瑣的工作量。因此,本文通過(guò)在公有云和私有云等各個(gè)云提供商內(nèi)搭建獨(dú)立的Kubernetes容器集群,然后在上層設(shè)計(jì)和實(shí)現(xiàn)一套統(tǒng)一的全局控制器用來(lái)管理和調(diào)度各個(gè)異構(gòu)云上的Kubernetes容器集群。這樣,既保證了底層異構(gòu)云的API統(tǒng)一性,同時(shí)也提供了業(yè)務(wù)跨云部署、遷移和彈性伸縮的便捷性。整體的混合云平臺(tái)架構(gòu)如圖1所示。
混合云管理平臺(tái)主要管理應(yīng)用的發(fā)布和底層異構(gòu)云上容器集群的資源調(diào)度,包含API、調(diào)度器、控制器和數(shù)據(jù)庫(kù)四個(gè)模塊,API主要用來(lái)接收前端的指令,調(diào)度器用來(lái)調(diào)度異構(gòu)云的Kubernetes集群,控制器用來(lái)處理業(yè)務(wù)邏輯,數(shù)據(jù)庫(kù)用來(lái)持久化存儲(chǔ)平臺(tái)管理的資源數(shù)據(jù)。底層公有云或私有云的Kubernetes集群主要管理單個(gè)容器集群資源的編排和調(diào)度,包含master和node節(jié)點(diǎn),master主要控制單個(gè)集群的資源調(diào)度,node作為工作節(jié)點(diǎn)運(yùn)行實(shí)際業(yè)務(wù)容器。
2.2異構(gòu)Kubernetes接入設(shè)計(jì)
在用戶(hù)每個(gè)異構(gòu)云基礎(chǔ)設(shè)施上部署Kubernetes,上層全局控制器需要添加各個(gè)Kubernetes集群的平臺(tái)地址、端口及BearerToken等信息,上層控制器通過(guò)標(biāo)準(zhǔn)的API和底層Kubernetes進(jìn)行調(diào)用。Kubernetes的Namespaces 表示命名空間,主要用來(lái)實(shí)現(xiàn)租戶(hù)的資源隔離;Nodes表示集群中的宿主機(jī)節(jié)點(diǎn),是資源調(diào)度的承載體;Services是服務(wù),可以為后端應(yīng)用暴露訪(fǎng)問(wèn)入口;Deployments主要用來(lái)管理應(yīng)用的副本數(shù);Pods是應(yīng)用運(yùn)行和調(diào)度的最小單位。
2.3網(wǎng)絡(luò)互聯(lián)方案設(shè)計(jì)
默認(rèn)情況下,各個(gè)異構(gòu)云上的Kubernetes集群是相互隔離的。如果想要實(shí)現(xiàn)混合云的跨云業(yè)務(wù)部署、遷移和彈性伸縮,必須打通底層網(wǎng)絡(luò)連接。首先,保證各個(gè)Kubernetes集群的master節(jié)點(diǎn)和混合云全局控制器網(wǎng)絡(luò)互通;其次,保證各個(gè)Kubernetes集群之間網(wǎng)絡(luò)互通,保證業(yè)務(wù)可以跨云訪(fǎng)問(wèn)。可以通過(guò)VPN或者專(zhuān)線(xiàn)來(lái)打通底層網(wǎng)絡(luò),如果對(duì)性能有較高要求的業(yè)務(wù),建議采用專(zhuān)線(xiàn)方案。
2.4權(quán)限設(shè)計(jì)
各個(gè)異構(gòu)云上的Kubernetes集群默認(rèn)都有自己的權(quán)限控制體系,但是相互獨(dú)立,無(wú)法統(tǒng)一管理。因此,需要在混合云的全局控制器上設(shè)計(jì)一個(gè)統(tǒng)一的權(quán)限管理模塊。該權(quán)限模塊包含混合云平臺(tái)賬號(hào)的管理、配額管理、角色的定義、業(yè)務(wù)、資源及操作等授權(quán)管理。賬號(hào)管理主要包含用戶(hù)名和密碼的創(chuàng)建、編輯、刪除和查看。配額管理主要用來(lái)控制用戶(hù)在平臺(tái)上使用資源的上限,當(dāng)申請(qǐng)資源的數(shù)量超過(guò)了設(shè)定的配額后,需要申請(qǐng)?zhí)嵘漕~。角色管理主要包含初始化角色和自定義角色,可以對(duì)應(yīng)用、集群、宿主機(jī)等資源的訪(fǎng)問(wèn)和操作權(quán)限進(jìn)行靈活授權(quán)。
3 混合云業(yè)務(wù)挑戰(zhàn)
3.1 應(yīng)用部署跨云調(diào)度實(shí)現(xiàn)
眾所周知,目前主流的分布式調(diào)度系統(tǒng)都是針對(duì)單個(gè)集群的主機(jī)進(jìn)行調(diào)度。但是,在混合云場(chǎng)景中,客戶(hù)的業(yè)務(wù)是同時(shí)分布在多個(gè)異構(gòu)云上,如何實(shí)現(xiàn)混合云的資源調(diào)度是當(dāng)前面臨的首要挑戰(zhàn)。為了能使應(yīng)用根據(jù)相應(yīng)的配置自動(dòng)部署在混合云上,并能匹配到最優(yōu)的計(jì)算資源,我們采用分層調(diào)度策略。首先,第一層為集群調(diào)度,根據(jù)應(yīng)用各模塊配置文件的集群參數(shù)決定組件部署的目標(biāo)集群;然后,第二層為主機(jī)調(diào)度,根據(jù)應(yīng)用各模塊配置文件的CPU、內(nèi)存等配置參數(shù),結(jié)合Kubernetes編排調(diào)度算法選擇最優(yōu)的目標(biāo)主機(jī)啟動(dòng)運(yùn)行業(yè)務(wù)容器。
在全局控制器層,會(huì)把用戶(hù)選擇的應(yīng)用和集群映射關(guān)系傳遞給全局調(diào)度器,全局調(diào)度器會(huì)根據(jù)應(yīng)用和集群映射列表自動(dòng)篩選和過(guò)濾出最優(yōu)的目標(biāo)集群。當(dāng)定位出目標(biāo)集群后,會(huì)把部署應(yīng)用的指令傳遞給Kubernetes master節(jié)點(diǎn)上的api-server,然后根據(jù)filter過(guò)濾和weight加權(quán)算法選擇最優(yōu)的node節(jié)點(diǎn),最后直接調(diào)用node節(jié)點(diǎn)的kubelet命令創(chuàng)建應(yīng)用Pod,即完成整個(gè)應(yīng)用的部署調(diào)度過(guò)程。
3.2 混合云資源遷移實(shí)現(xiàn)
通常在物理機(jī)和虛擬機(jī)、虛擬機(jī)和虛擬機(jī)直接做遷移,一般采用P2V和V2V方案。如果在混合云上遷移采用這種方法不但效率低下,而且還有一定的局限性。由于我們的混合云平臺(tái)底層采用的是容器技術(shù),利用其輕量、啟動(dòng)快速及使用便捷的特性,結(jié)合分層調(diào)度策略,可以很方便實(shí)現(xiàn)跨云的資源遷移。當(dāng)應(yīng)用因業(yè)務(wù)原因需要從A云遷移到B云上,首先,在鏡像倉(cāng)庫(kù)根據(jù)源應(yīng)用查找依賴(lài)鏡像,在B云的容器集群里重新啟動(dòng)相同規(guī)格相同數(shù)量的應(yīng)用容器;然后,當(dāng)B云的容器啟動(dòng)成功后,快速切換業(yè)務(wù)流量到B云上,并刪除A云上老的應(yīng)用容器?;谌萜鞯倪w移技術(shù),平滑且高效,可以達(dá)到業(yè)務(wù)的無(wú)感知狀態(tài)。
3.3 業(yè)務(wù)資源彈性伸縮實(shí)現(xiàn)
業(yè)務(wù)應(yīng)用在日常的運(yùn)行中,難免會(huì)因用戶(hù)的訪(fǎng)問(wèn)數(shù)量變化而導(dǎo)致底層流量波動(dòng)。為了應(yīng)對(duì)這種流量抖動(dòng),避免因流量峰值導(dǎo)致業(yè)務(wù)訪(fǎng)問(wèn)故障或者因流量一直低負(fù)載而浪費(fèi)計(jì)算資源。因此,需要根據(jù)應(yīng)用的流量預(yù)估范圍,制定資源平均負(fù)載水位線(xiàn)區(qū)間【low, high】和對(duì)應(yīng)的計(jì)算資源副本區(qū)間范圍【min, max】,同時(shí)預(yù)先設(shè)定一個(gè)計(jì)算資源副本默認(rèn)值。根據(jù)橫向彈性伸縮策略,當(dāng)檢測(cè)到資源平均負(fù)載持續(xù)大于高水位閾值,觸發(fā)容器的橫向擴(kuò)展副本策略;當(dāng)資源平均負(fù)載持續(xù)小于低水位閾值,觸發(fā)容器的橫向縮減副本策略。通過(guò)上述彈性伸縮策略可以最大化地利用底層資源。
4平臺(tái)特色
4.1 應(yīng)用跨云進(jìn)行資源調(diào)度及遷移
平臺(tái)利用容器技術(shù),結(jié)合主流容器編排引擎Kubernetes作為單個(gè)云集群的管理和調(diào)度。在異構(gòu)容器云集群上層封裝了一層統(tǒng)一的中央調(diào)度控制器,自頂而下對(duì)應(yīng)用和資源進(jìn)行全生命周期管理。這種架構(gòu),完美地解決了混合云管理的兩個(gè)難題:應(yīng)用跨云調(diào)度和遷移,真正實(shí)現(xiàn)了混合云在控制層和數(shù)據(jù)層的閉環(huán)管理,以高效率低成本幫助客戶(hù)實(shí)現(xiàn)了業(yè)務(wù)災(zāi)備。
4.2 資源根據(jù)應(yīng)用負(fù)載進(jìn)行彈性伸縮
平臺(tái)自主研發(fā)的彈性伸縮算法,能夠根據(jù)業(yè)務(wù)負(fù)載情況自動(dòng)靈活的對(duì)計(jì)算資源副本進(jìn)行彈性伸縮。尤其在客戶(hù)有大促業(yè)務(wù)時(shí)候,能夠幫助客戶(hù)降本增效。
5總結(jié)及展望
本文設(shè)計(jì)和實(shí)現(xiàn)的混合云管理平臺(tái),主要通過(guò)對(duì)接異構(gòu)云上的Kubernetes集群,通過(guò)上層中央調(diào)度器進(jìn)行統(tǒng)一管理、統(tǒng)一調(diào)度和統(tǒng)一權(quán)限,解決了異構(gòu)云的信息孤島和管理復(fù)雜性問(wèn)題。平臺(tái)主要以應(yīng)用維度進(jìn)行管理,在應(yīng)用的部署和變更過(guò)程中,會(huì)對(duì)資源進(jìn)行調(diào)度、遷移和彈性伸縮等操作。目前已經(jīng)應(yīng)用在內(nèi)部的業(yè)務(wù)系統(tǒng),也商用于多家外部客戶(hù)。由于平臺(tái)研發(fā)周期比較短,目前支持的功能還有待擴(kuò)展,對(duì)CICD等場(chǎng)景的支持后續(xù)會(huì)融入混合云平臺(tái)中。
參考文獻(xiàn):
[1] 邊俊峰.基于Docker的資源調(diào)度及應(yīng)用容器集群管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].濟(jì)南:山東大學(xué),2017.
【通聯(lián)編輯:聞翔軍】