新國脈文旅科技有限公司 朱振武
隨著IT技術的不斷發(fā)展,新興的基于容器的PaaS云計算技術憑借自身啟動快、資源損耗小、輕量級的、容器中運行的服務功能相對單一等優(yōu)點迅速被各大企業(yè)接受,越來越多的公司開始部署基于容器的PaaS云平臺并將之應用于生產(chǎn)中,本文著重論述大中型企業(yè)如何建設企業(yè)自己的基于容器的PaaS私有云系統(tǒng)。
私有云計算是一種將企業(yè)的計算資源統(tǒng)一管理、統(tǒng)一分配、按需分配的IT服務模式。目前,多數(shù)大中型企業(yè)在數(shù)字化轉(zhuǎn)型中已實現(xiàn)基于IaaS的云計算,IaaS云技術在一定程度上提升了計算資源的使用率和運維效率。但隨著企業(yè)的發(fā)展,企業(yè)在IT運營和管理上遇到了眾多新挑戰(zhàn),主要是IT系統(tǒng)越來越龐雜、IT資源越來越多、應用微服務化后,IaaS云技術存在對算力的管理和分配不夠輕便靈活、難于管理海量微服務、自身較重等諸多問題。
為了解決上述問題,大中企業(yè)紛紛采用最新IT技術,將企業(yè)IT基礎架構從IaaS云逐步升級到PaaS容器云或兩者并存的時代,利用容器云的輕量級、容器化等特點來管理海量微服務、提高資源的利用率、增強系統(tǒng)可靠性、降低IT運營成本。
LXC(Linux Container)是Linux的內(nèi)核虛擬化技術,LXC通過Namespace實現(xiàn)了進程資源的隔離,通過Cgroups(Control Groups)控制每個Namespace中的資源分配。與傳統(tǒng)虛擬化技術(KVM)相比,LXC與宿主機使用同一個內(nèi)核,不需要指令級模擬,容器與宿主機的資源可以共享,具有輕量、性能損耗小等優(yōu)點。
要構建容器云,我們需要選擇一個合適的容器技術。目前,容器技術中具有代表性的有Docker技術和Mesos技術。從當前的容器技術發(fā)展分析,Docker技術是業(yè)界容器技術的主流和事實標準,是容器云的未來。
Docker是一個基于LXC內(nèi)核容器技術實現(xiàn)的開源應用容器引擎[1],通過對LXC進行進一步封裝,實現(xiàn)應用程序級別的隔離,它的分層結構設計極大實現(xiàn)了共享資源,降低了系統(tǒng)的資源使用率,啟動非???,擁有非常高的性能。
容器云架構下,一個業(yè)務較復雜的應用將被拆分成若干功能單一的微服務并在容器中運行,為了滿足IT系統(tǒng)的高可用和高并發(fā)等需求,一個微服務會有若干副本并行運行。故而容器云中將會有成千上萬的微服務實例,實例之間還進行著紛繁復雜的交互通信,為了高效管理這些微服務,業(yè)界一般采用容器編排技術實現(xiàn)海量容器的自動化的管理、監(jiān)控、故障發(fā)現(xiàn)和隔離、故障遷移等工作。
目前成熟的容器編排技術有Swarm和Kubernetes(以下簡稱K8S)等技術。其中,K8S提供了豐富的容器編排和管理功能[2],諸如:服務注冊與發(fā)現(xiàn)、服務網(wǎng)關、服務自動遷移、灰度部署、服務治理等,功能涵蓋廣泛,能夠滿足絕大多數(shù)企業(yè)的IT需求。
我們以K8S和Docker為核心技術,探討如何構建企業(yè)級PaaS容器云,并從企業(yè)的IT治理等方面進一步闡述如何高效的管理和使用容器云。容器云平臺自底向上共分為IT資源層、服務調(diào)度層、云服務層、控制層、云接入層等五層。在IT資源層,使用K8S+Docker技術構建容器云基礎環(huán)境,實現(xiàn)對算力的統(tǒng)一管理、按需分配;在服務調(diào)度層,借助K8S強大的服務編排能力,實現(xiàn)對服務的注冊與發(fā)現(xiàn)、服務所需資源的彈性伸縮、服務生命周期管理等能力;在云服務層,通過對開源軟件進行集成結合自研方式,建設容器云主要支撐系統(tǒng);在控制層,依托K8S的Ingress網(wǎng)關服務,構建訪問容器云的云網(wǎng)關;在云接入層,構建云服務治理系統(tǒng)及用于外部用戶統(tǒng)一接入容器云的能力開放系統(tǒng)。平臺的系統(tǒng)架構如圖1所示。

圖1 容器云平臺的系統(tǒng)架構Fig.1 System architecture of container cloud platform
容器云采用Master-Slave架構來統(tǒng)籌管理算力,管理節(jié)點(Master)及云核心服務軟件(代碼倉庫、鏡像倉庫等)可采用獨立服務器或容器部署,計算(Slave)節(jié)點可采用物理機或虛擬機部署(推薦使用物理機)。本文采用管理節(jié)點(Master)及云核心服務軟件獨立服務器部署方式,網(wǎng)絡拓撲圖如圖2所示。

圖2 容器云平臺的網(wǎng)絡拓撲Fig.2 Network topology of container cloud platform
容器云基礎環(huán)境搭建主要是部署K8S、Docker等容器云核心服務,搭建容器云平臺對系統(tǒng)的軟硬件環(huán)境有一定的要求和建議,主要有以下幾個方面:(1)宿主機CPU要支持虛擬化技術并在BIOS中開啟;(2)宿主機操作系統(tǒng)基于X86_64架構的各種Linux發(fā)行版,Kernel在4.X以上;(3)Master節(jié)點的CPU、內(nèi)存、存儲建議要高于2core、4G、20G;(4)Node節(jié)點的CPU、內(nèi)存、存儲建議要高于4core 8G 40G;(5)核心軟件版本建議:K8S v1.15以上、Docker v1.15以上、Etcd v2.0以上。
生產(chǎn)環(huán)境下,選擇若干臺(一般3臺以上、奇數(shù)臺)高性能服務器作為Master節(jié)點集群,部署ETCD(有條件的情況下ETCD可以使用獨立服務器部署)、API-Server、Controller-Manager、Scheduler等服務。其中,ETCD作為K8S的運行時數(shù)據(jù)庫,存儲K8S集群運行時關鍵數(shù)據(jù)。API-Server負責和ETCD交互,并對外提供統(tǒng)一的API調(diào)用入口。Controller-Manager作為K8S集群的管理控制中心,負責集群內(nèi)Node、Service、Replication等資源的管理。Scheduler負責Node節(jié)點資源管理,將Pod合理分配到相應的Node節(jié)點。
為了容器云能夠7×24h的高可用性運行,需對ETCD、API-Server等服務進行高可用配置??刹捎肊TCD和API-Server的原生集群能力,結合Keepalived、HA-Proxy實現(xiàn)Master節(jié)點的高可用。
Node(Slave)節(jié)點是容器云的算力節(jié)點,眾多的算力節(jié)點形成算力池,在Master統(tǒng)一調(diào)度下對外提供云服務。Node節(jié)點上需部署Docker、Kubelet、Kuberoute等服務。其中,Docker提供容器服務。Kubelet負責接收Scheduler的指令,維護Pod和上報Pod狀態(tài)。Kube-route作為容器云的網(wǎng)絡服務,是K8S Service的訪問代理和Pod的負載均衡器。
在容器云虛擬網(wǎng)絡選型上,我們選擇使用支持CNI網(wǎng)絡的Kube-router組件替代了Kube-proxy組件。相比業(yè)界常用的Overlay方式的Flannel網(wǎng)絡,CNI網(wǎng)絡的優(yōu)點是網(wǎng)絡速度相對較快、帶寬損耗小等優(yōu)點。如果企業(yè)對網(wǎng)絡穩(wěn)定性有非常高的需求,也可以選擇最為穩(wěn)定的Flannel網(wǎng)絡。
要使用容器云平臺能夠?qū)ν馓峁┓眨覀冞€需要部署代碼倉庫、Docker鏡像倉庫、云DNS服務、接入網(wǎng)關等容器云配套服務軟件,主要包括如下軟件服務:(1)代碼倉庫:采用開源GitLib作為云平臺的代碼倉庫;(2)鏡像倉庫:選擇一臺服務器并安裝Docker,下載Registry鏡像并配置啟動;(3)容器云DNS:選用Kube-DNS作為云平臺內(nèi)部DNS服務;(4)服務網(wǎng)關:選用Nginx-Ingress組件實現(xiàn)外部系統(tǒng)通過ClusterIP方式對容器云的訪問。
可利舊現(xiàn)網(wǎng)存儲系統(tǒng)(如:企業(yè)現(xiàn)有IaaS云存儲),如果條件允許,也可通使用NFS或GlusterFS等建設容器云專用存儲系統(tǒng)。
容器云基礎環(huán)境搭建完成后,平臺的各組件、各模塊的架構和調(diào)用關系如圖3所示。

圖3 容器云主要組件調(diào)用關系Fig.3 Container cloud's component invocation relationship
為了進一步提升容器云的可用性和自動化程度,還需為容器云配套建設一系列服務治理系統(tǒng),主要包括基于DevOps的CI/CD自動化流水線子系統(tǒng)、云數(shù)據(jù)總線服務子系統(tǒng)、微服務日志中心子系統(tǒng)、微服務配置中心子系統(tǒng)等。
企業(yè)的容器云構建完成后,并不代表企業(yè)就此可以高效的使用容器云,為了更好發(fā)揮容器云的優(yōu)勢,企業(yè)需從人力資源管理、IT管理流程和IT研發(fā)等方面制定適合自身的工作標準和制度,并在生產(chǎn)活動中持續(xù)完善和提升IT管理水平和容器云資源利用水平,為企業(yè)生產(chǎn)助力。