楊武

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