中國電信股份有限公司湖南分公司|劉印 林鴻雁
為了滿足新業(yè)務創(chuàng)新與交付的敏捷性需求,運營商一直在探索IT技術轉(zhuǎn)型,這種轉(zhuǎn)型有多個維度,應用轉(zhuǎn)型是其中之一。容器技術最早出現(xiàn)在2000年左右,但直到2013年才開始成為熱點技術,近兩年有了飛速發(fā)展。由于運營商行業(yè)中有很多高并發(fā)應用,對IT性能和彈性都有較高要求,分布式架構可以很好地滿足這類應用的需求,是應用轉(zhuǎn)型的一個主要方向。因而,容器技術與分布式架構相得益彰,未來會發(fā)展成為新型應用平臺的核心。
目前,以Docker為代表的新一代容器技術有幾個主要特點:第一個是共享底層操作系統(tǒng),并提供了一定的隔離與資源訪問控制能力,相對于虛擬化技術,可以更少地占用資源,更快地加載應用;第二個是新的應用封裝技術,極大地簡化了應用的交付與運維管理,提高了應用的可移植性和兼容性,但代價是需要重新打包應用,甚至重構應用,才能充分利用容器技術的優(yōu)勢;第三個是開放性,容器及相關技術的飛速發(fā)展得益于開源社區(qū)的大力支持,在容器運行時和容器編排等核心技術組件上標準化程度非常高,有利于運營商基于開源或商業(yè)產(chǎn)品來打造自己的解決方案,選型自由度高。
在生產(chǎn)環(huán)境中大規(guī)模部署容器應用時,必須選擇好容器編排工具進行自動化管理,容器編排工具的基本功能有4個。
●編排和調(diào)度。根據(jù)策略自動化部署容器應用,智能選擇部署位置,并對容器化應用提供全生命周期管理。
●自動擴展與升級。自動實現(xiàn)應用的副本管理,根據(jù)負載實現(xiàn)應用的彈性伸縮,滾動升級以實現(xiàn)不中斷業(yè)務的應用程序更新。
●服務可用性管理。監(jiān)測應用和服務的可用性,出現(xiàn)故障時可以自動修復,避免人工操作,這在大規(guī)模部署場景下尤為重要。
●與其它組件的集成。編排工具是核心但不是全部,需提供完善的管理接口,特別是API接口,以對接容器平臺上的其它功能組件。
最近兩年,主流的容器編排與調(diào)度工具主要有Kubernetes、Mesos(DC/OS)和Swarm三種,三種工具特色鮮明,下表是三者的對比分析。
由表項分析得出以下結(jié)論:Swarm與Docker容器引擎等組件結(jié)合緊密,優(yōu)點是使用簡便,缺點是僅支持容器應用的管理,擴展能力相對較弱,適用于中小規(guī)模場景;Mesos曾經(jīng)是最受追捧的編排工具,對常見的工作負載均有較好支持,并且最先支持大規(guī)模容器部署環(huán)境,Mesos的弱項是跨平臺能力和可管理性;Kubernetes源自Google的Brog項目,社區(qū)活躍度高,發(fā)展速度最快,目前已經(jīng)發(fā)展成為最受歡迎的編排工具,K8s對微服務框架有非常好的支持,也有較強的跨平臺能力,技術先進性明顯。Google將K8s項目移交給CNCF管理之后,生態(tài)系統(tǒng)變得更加完善,CNCF于 2017年發(fā)布的調(diào)查報告顯示,已經(jīng)有77%的容器用戶采用K8s作為編排工具。K8s已經(jīng)發(fā)展成為事實上的標準。
表 主流容器編排工具特性比較
容器鏡像管理解決方案主要分為SaaS和本地部署兩類,出于性能、可靠性和安全性的考慮,企業(yè)環(huán)境下應用容器時,都傾向于在本地部署容器鏡像倉庫,例如Docker官方的公共鏡像倉庫可以作為基礎鏡像的來源使用,但不適合用來存儲企業(yè)自身的容器鏡像,也不適合作為生產(chǎn)環(huán)境的鏡像源來使用。因此,運營商需要建立自己的企業(yè)級容器鏡像倉庫。一個功能完善的鏡像倉庫應該具備下述三大功能。
圖1 容器網(wǎng)絡與安全配置示例
●支持多用戶的驗證與授權機制。鏡像倉庫是一種共享服務,必然要支持多用戶場景,因此集成的驗證、授權與審計功能非常重要,還要支持不同用戶之間的協(xié)作,方便鏡像共享。
●鏡像安全服務。鏡像安全是容器安全中的重要一環(huán),比較關鍵的技術手段是鏡像內(nèi)容的掃描和鏡像的發(fā)布控制。企業(yè)需要定期對鏡像包內(nèi)部的文件進行安全性掃描,以發(fā)現(xiàn)脆弱性和安全風險;也要對鏡像進行審核,只發(fā)布那些簽合安全與質(zhì)量控制規(guī)范的鏡像供用戶下載使用。
●鏡像的遠程同步與分發(fā)。企業(yè)通常需要在多個場點上部署容器應用,最佳策略是在每個場點部署本地鏡像倉庫,同時實現(xiàn)這些鏡像存儲服務節(jié)點之間的智能復制,以提供鏡像分發(fā)和鏡像同步等服務。
相對于其它的管理任務,容器的網(wǎng)絡與安全管理最具挑戰(zhàn)性。計算和存儲資源相對獨立,可以基于集群來進行管理。而網(wǎng)絡和安全則不同,地址與路由的管理以及訪問控制策略的管理都必須是全局統(tǒng)一的。根據(jù)調(diào)研,發(fā)現(xiàn)目前可服務于容器的網(wǎng)絡與安全解決方案主要分為兩大類:基于物理網(wǎng)絡的解決方案和基于虛擬網(wǎng)絡的解決方案。
基于物理網(wǎng)絡的解決方案采用Underlay的方式來轉(zhuǎn)發(fā)數(shù)據(jù)包。以目前應用最廣范的Calico為例,它采用純3層模式,通過管理iptables規(guī)則來實現(xiàn)跨主機的路由,不需要像Overlay方案一樣多次封包解包,這樣轉(zhuǎn)發(fā)效率可以得到保障。但最大的缺陷是功能受限,只能提供,基于iptables的路由和訪問控制功能,可管理性差,與現(xiàn)有的網(wǎng)絡解決方案也不兼容。
基于虛擬網(wǎng)絡的解決方案特點是功能不受限于物理網(wǎng)絡,有更好的兼容性和擴展性,但是和我們現(xiàn)有的網(wǎng)絡解決方案都不相容,功能也不夠完善,特別是監(jiān)控和分析能力和我們的需求有較大差距。這些項目中目前影響力最大的是Flannel,它也是Kubernetes缺省采用的容器網(wǎng)絡解決方案。
上述容器網(wǎng)絡解決方案的功能都不夠完整,企業(yè)可以考慮將現(xiàn)有虛擬化和云平臺中使用的SDN解決方案延伸到容器環(huán)境,這樣做可以帶來諸多好處。一是實現(xiàn)基于圖形化界面的統(tǒng)一管理能力,可以在一個管理平臺上統(tǒng)一管理物理機、虛擬機和容器的網(wǎng)絡和安全服務;二是層疊技術解耦了物理網(wǎng)絡,有非常好的兼容性,未來可以對接各種異構網(wǎng)絡環(huán)境;三是功能全面,集成了南北向和東西向的路由及訪問控制,負載均衡等功能,實現(xiàn)全面的策略驅(qū)動網(wǎng)絡;四是缺省提供租戶間隔離功能,安全性較高。
圖1展示的是一個容器網(wǎng)絡與安全實現(xiàn)的參考范例,整體架構是在現(xiàn)有的二/三層物理網(wǎng)絡基礎上構建一個虛擬網(wǎng)絡,這個虛擬網(wǎng)絡通過邊界虛擬路由器集群與外界相連,實現(xiàn)南北向流量的轉(zhuǎn)發(fā)。內(nèi)部則利用多個虛擬交換機建立獨立的二層網(wǎng)絡,各網(wǎng)絡之間相互隔離。容器管理平臺PKS和網(wǎng)絡管理平臺NSX-T的管理資源采用獨立的網(wǎng)絡來部署,與虛擬化平臺等管理節(jié)點歸屬于現(xiàn)有的管理網(wǎng)絡,以保證管理平臺的性能和安全性。
此外,每個K8s集群,以及每個集群內(nèi)部的租戶分區(qū)命名空間都采用一套相互獨立的網(wǎng)絡,每個獨立網(wǎng)絡采用單獨的地址段,當容器啟動時自動分配IP地址。上述能力的實現(xiàn)得益于PKS與NSX-T的集成,當我們在K8s集群中創(chuàng)建新的命名空間時,NSX會自動創(chuàng)建與之對應的網(wǎng)絡,這樣可以降低管理負擔,并有效提升安全性。
當前業(yè)界以容器技術為核心的解決方案主要有以下幾種場景,分別對應新應用改造的不同階段。
基礎容器平臺類。包括容器運行時服務、容器集群服務等。這一類解決方案主要用來提供容器類應用的運行環(huán)境,因為其涵蓋的組件相對較少,技術門檻低,通常在導入容器技術的第一階段采用,技術關鍵點是應用封裝與鏡像管理、容器應用的編排與調(diào)度,容器平臺資源服務實現(xiàn)、服務的可管理性與安全性。
以容器技術為核心的應用服務平臺類。即新一代PaaS平臺,與傳統(tǒng)PaaS相比,有輕量化、非結(jié)構化的特點,包括基礎容器平臺類服務,以及相關的各種應用開發(fā)與管理組件,復雜度較高,需要同時考慮應用開發(fā)與平臺運維部門的需求,以建立一個貫穿應用全生命周期的平臺,技術關鍵點是與IDE環(huán)境的集成,自動化應用交付與運維,應用擴展性、可用性以及應用的更新與升級。
PaaS平臺建設的第一階段是在生產(chǎn)環(huán)境中建設容器云平臺,主要服務內(nèi)容為容器集群及容器應用的部署和運維;第二階段是擴展以容器為核心的新一代應用平臺,完善容器集群服務,利用現(xiàn)有的開源或商業(yè)產(chǎn)品構造具有特色的、自主可控的非結(jié)構化PaaS平臺;第三階段是PaaS平臺的深入應用,利用PaaS平臺的服務能力,加快應用開發(fā)并加強基礎組件的共享,減少重復建設并提升應用的運維服務水平,實現(xiàn)新應用在生產(chǎn)環(huán)境中高度智能化和自動化運維。
目前運營商對容器的應用尚處在探索階段,部分省級運營商已經(jīng)成功地將一些新應用部署到了容器平臺之上,積累了很多相關的經(jīng)驗。但是結(jié)合實際情況,本文總結(jié)了容器云平臺建設的難點與挑戰(zhàn)。
●有大量不適配容器平臺的應用。運營商行業(yè)信息化建設較早,經(jīng)過多年的發(fā)展,積累了很多應用,這些應用多是采用集中式架構的有狀態(tài)應用,雖然可以將這些應用打包成容器鏡像,但簡單地重新打包并不能充分發(fā)揮容器平臺的彈性優(yōu)勢,需要同時管理物理機、虛擬機和容器環(huán)境,這會增加運維管理的復雜性。而創(chuàng)新型應用,如一些面向互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的新業(yè)務,適于優(yōu)先部署到容器平臺。
●新技術帶來的學習成本與選擇成本較高。相對于虛擬化技術,容器平臺的門檻更高,需要掌握大量的新知識、新技能。容器生態(tài)環(huán)境中充斥著大量的開源組件,這些開源組件功能良莠不齊,發(fā)展路線與前景各有不同,路線選擇錯誤可能導致不斷變換跑道的麻煩。如果全面擁抱容器開源體系,企業(yè)需要投入大量人力跟蹤前沿技術發(fā)展方向,解決開源組件的未知缺陷。
●如何保障容器平臺的可靠性與安全性。要在生產(chǎn)環(huán)境中采用容器技術,必須有一套經(jīng)過驗證的、成熟的技術平臺。相對于虛擬化,以容器技術為核心的應用平臺還處在發(fā)展階段,相關的工具和解決方案有待完善,原有的管理方法可能不適用于容器平臺,確保容器平臺安全可靠地運行,是一項不可忽視的任務。
●如何構建適應容器應用運行的運維體系。容器化改造之后,一臺宿主機上運行的容器可以成百上千,如何對這些容器的故障進行維護,需要對原有的運維流程、團隊與技術工具進行更新升級以適應新的業(yè)務情況?,F(xiàn)在主流的容器技術廠商可以提供包括K8S、多資源池管理、容器網(wǎng)絡管理和容器資源自動化運維的整體解決方案,可以幫助我們快速建設容器云并提供相關的容器運維知識轉(zhuǎn)移,保障運營生產(chǎn)的安全和穩(wěn)定。
在計劃建設容器云的時候,中國電信選擇建設一個支撐容器應用部署和運維的容器云。該容器云可以支持微服務化的應用和各種云原生應用(如圖2所示)。
圖2 容器云平臺總體架構
首先確定K8S技術平臺的選型。將容器平臺定位于新應用的運行平臺,幫助解決傳統(tǒng)上應用發(fā)布慢、彈性差、資源利用率低三個問題,更加適應新興云原生類應用微服務化、分布式的開發(fā)與部署架構。運營商等可以先試點后推廣,積累云原生類應用容器平臺建設與運行經(jīng)驗,再逐步推進舊應用改造,遷移到容器平臺上來。
選擇主流的支持K8S容器技術方案,在麓谷與荷花園兩個數(shù)據(jù)中心之上構建跨數(shù)據(jù)中心多活的K8S容器平臺??鐢?shù)據(jù)中心的架構讓應用在兩個數(shù)據(jù)中心容器中平衡部署,利用容器調(diào)度平臺讓應用節(jié)點在兩個數(shù)據(jù)中心平滑移動,同時保證了高可用及容災場景。
在容器網(wǎng)絡與安全方面,可以采用SDN的技術方案,替代開源的容器網(wǎng)絡組件,提高全網(wǎng)容器的安全隔離及網(wǎng)絡流量可視化的能力。
利用可視化自動化與智能化手段,實現(xiàn)新舊應用、虛擬機與容器、傳統(tǒng)部署架構與微服務架構等混合異構環(huán)境統(tǒng)一監(jiān)控統(tǒng)一運維。
將容器平臺能力包裝成自動化服務,與現(xiàn)有IaaS服務平臺及ITIL運維平臺整合。形成完整的基礎架構即代碼(Infrastructure as a code)能力,為DevOps的推進奠定堅實的基礎。
容器平臺建設初步實現(xiàn)了敏態(tài)穩(wěn)態(tài)雙模業(yè)務一體化運維,有利地支撐了開發(fā)運維一體化進程。后續(xù)我們將進一步圍繞容器平臺推動跨平臺一體化融合、智能化運維提升以及新技術業(yè)務賦能等工作,加快網(wǎng)絡智能化、業(yè)務生態(tài)化、運營智慧化步伐。