容器技术能否成为运营商转型的“发动机”
2019-02-21中国电信股份有限公司湖南分公司刘印林鸿雁
中国电信股份有限公司湖南分公司|刘印 林鸿雁
为了满足新业务创新与交付的敏捷性需求,运营商一直在探索IT技术转型,这种转型有多个维度,应用转型是其中之一。容器技术最早出现在2000年左右,但直到2013年才开始成为热点技术,近两年有了飞速发展。由于运营商行业中有很多高并发应用,对IT性能和弹性都有较高要求,分布式架构可以很好地满足这类应用的需求,是应用转型的一个主要方向。因而,容器技术与分布式架构相得益彰,未来会发展成为新型应用平台的核心。
容器平台建设关键组件及技术选型要点
目前,以Docker为代表的新一代容器技术有几个主要特点:第一个是共享底层操作系统,并提供了一定的隔离与资源访问控制能力,相对于虚拟化技术,可以更少地占用资源,更快地加载应用;第二个是新的应用封装技术,极大地简化了应用的交付与运维管理,提高了应用的可移植性和兼容性,但代价是需要重新打包应用,甚至重构应用,才能充分利用容器技术的优势;第三个是开放性,容器及相关技术的飞速发展得益于开源社区的大力支持,在容器运行时和容器编排等核心技术组件上标准化程度非常高,有利于运营商基于开源或商业产品来打造自己的解决方案,选型自由度高。
容器编排工具的选择
在生产环境中大规模部署容器应用时,必须选择好容器编排工具进行自动化管理,容器编排工具的基本功能有4个。
●编排和调度。根据策略自动化部署容器应用,智能选择部署位置,并对容器化应用提供全生命周期管理。
●自动扩展与升级。自动实现应用的副本管理,根据负载实现应用的弹性伸缩,滚动升级以实现不中断业务的应用程序更新。
●服务可用性管理。监测应用和服务的可用性,出现故障时可以自动修复,避免人工操作,这在大规模部署场景下尤为重要。
●与其它组件的集成。编排工具是核心但不是全部,需提供完善的管理接口,特别是API接口,以对接容器平台上的其它功能组件。
最近两年,主流的容器编排与调度工具主要有Kubernetes、Mesos(DC/OS)和Swarm三种,三种工具特色鲜明,下表是三者的对比分析。
由表项分析得出以下结论:Swarm与Docker容器引擎等组件结合紧密,优点是使用简便,缺点是仅支持容器应用的管理,扩展能力相对较弱,适用于中小规模场景;Mesos曾经是最受追捧的编排工具,对常见的工作负载均有较好支持,并且最先支持大规模容器部署环境,Mesos的弱项是跨平台能力和可管理性;Kubernetes源自Google的Brog项目,社区活跃度高,发展速度最快,目前已经发展成为最受欢迎的编排工具,K8s对微服务框架有非常好的支持,也有较强的跨平台能力,技术先进性明显。Google将K8s项目移交给CNCF管理之后,生态系统变得更加完善,CNCF于 2017年发布的调查报告显示,已经有77%的容器用户采用K8s作为编排工具。K8s已经发展成为事实上的标准。
表 主流容器编排工具特性比较
容器镜像管理
容器镜像管理解决方案主要分为SaaS和本地部署两类,出于性能、可靠性和安全性的考虑,企业环境下应用容器时,都倾向于在本地部署容器镜像仓库,例如Docker官方的公共镜像仓库可以作为基础镜像的来源使用,但不适合用来存储企业自身的容器镜像,也不适合作为生产环境的镜像源来使用。因此,运营商需要建立自己的企业级容器镜像仓库。一个功能完善的镜像仓库应该具备下述三大功能。
图1 容器网络与安全配置示例
●支持多用户的验证与授权机制。镜像仓库是一种共享服务,必然要支持多用户场景,因此集成的验证、授权与审计功能非常重要,还要支持不同用户之间的协作,方便镜像共享。
●镜像安全服务。镜像安全是容器安全中的重要一环,比较关键的技术手段是镜像内容的扫描和镜像的发布控制。企业需要定期对镜像包内部的文件进行安全性扫描,以发现脆弱性和安全风险;也要对镜像进行审核,只发布那些签合安全与质量控制规范的镜像供用户下载使用。
●镜像的远程同步与分发。企业通常需要在多个场点上部署容器应用,最佳策略是在每个场点部署本地镜像仓库,同时实现这些镜像存储服务节点之间的智能复制,以提供镜像分发和镜像同步等服务。
容器的网络与安全
相对于其它的管理任务,容器的网络与安全管理最具挑战性。计算和存储资源相对独立,可以基于集群来进行管理。而网络和安全则不同,地址与路由的管理以及访问控制策略的管理都必须是全局统一的。根据调研,发现目前可服务于容器的网络与安全解决方案主要分为两大类:基于物理网络的解决方案和基于虚拟网络的解决方案。
基于物理网络的解决方案采用Underlay的方式来转发数据包。以目前应用最广范的Calico为例,它采用纯3层模式,通过管理iptables规则来实现跨主机的路由,不需要像Overlay方案一样多次封包解包,这样转发效率可以得到保障。但最大的缺陷是功能受限,只能提供,基于iptables的路由和访问控制功能,可管理性差,与现有的网络解决方案也不兼容。
基于虚拟网络的解决方案特点是功能不受限于物理网络,有更好的兼容性和扩展性,但是和我们现有的网络解决方案都不相容,功能也不够完善,特别是监控和分析能力和我们的需求有较大差距。这些项目中目前影响力最大的是Flannel,它也是Kubernetes缺省采用的容器网络解决方案。
上述容器网络解决方案的功能都不够完整,企业可以考虑将现有虚拟化和云平台中使用的SDN解决方案延伸到容器环境,这样做可以带来诸多好处。一是实现基于图形化界面的统一管理能力,可以在一个管理平台上统一管理物理机、虚拟机和容器的网络和安全服务;二是层叠技术解耦了物理网络,有非常好的兼容性,未来可以对接各种异构网络环境;三是功能全面,集成了南北向和东西向的路由及访问控制,负载均衡等功能,实现全面的策略驱动网络;四是缺省提供租户间隔离功能,安全性较高。
K8s与NSX-T集成实现容器网络与安全配置实例
图1展示的是一个容器网络与安全实现的参考范例,整体架构是在现有的二/三层物理网络基础上构建一个虚拟网络,这个虚拟网络通过边界虚拟路由器集群与外界相连,实现南北向流量的转发。内部则利用多个虚拟交换机建立独立的二层网络,各网络之间相互隔离。容器管理平台PKS和网络管理平台NSX-T的管理资源采用独立的网络来部署,与虚拟化平台等管理节点归属于现有的管理网络,以保证管理平台的性能和安全性。
此外,每个K8s集群,以及每个集群内部的租户分区命名空间都采用一套相互独立的网络,每个独立网络采用单独的地址段,当容器启动时自动分配IP地址。上述能力的实现得益于PKS与NSX-T的集成,当我们在K8s集群中创建新的命名空间时,NSX会自动创建与之对应的网络,这样可以降低管理负担,并有效提升安全性。
容器技术主要应用场景
当前业界以容器技术为核心的解决方案主要有以下几种场景,分别对应新应用改造的不同阶段。
基础容器平台类。包括容器运行时服务、容器集群服务等。这一类解决方案主要用来提供容器类应用的运行环境,因为其涵盖的组件相对较少,技术门槛低,通常在导入容器技术的第一阶段采用,技术关键点是应用封装与镜像管理、容器应用的编排与调度,容器平台资源服务实现、服务的可管理性与安全性。
以容器技术为核心的应用服务平台类。即新一代PaaS平台,与传统PaaS相比,有轻量化、非结构化的特点,包括基础容器平台类服务,以及相关的各种应用开发与管理组件,复杂度较高,需要同时考虑应用开发与平台运维部门的需求,以建立一个贯穿应用全生命周期的平台,技术关键点是与IDE环境的集成,自动化应用交付与运维,应用扩展性、可用性以及应用的更新与升级。
PaaS平台建设的第一阶段是在生产环境中建设容器云平台,主要服务内容为容器集群及容器应用的部署和运维;第二阶段是扩展以容器为核心的新一代应用平台,完善容器集群服务,利用现有的开源或商业产品构造具有特色的、自主可控的非结构化PaaS平台;第三阶段是PaaS平台的深入应用,利用PaaS平台的服务能力,加快应用开发并加强基础组件的共享,减少重复建设并提升应用的运维服务水平,实现新应用在生产环境中高度智能化和自动化运维。
挑战仍存,逐个突破
目前运营商对容器的应用尚处在探索阶段,部分省级运营商已经成功地将一些新应用部署到了容器平台之上,积累了很多相关的经验。但是结合实际情况,本文总结了容器云平台建设的难点与挑战。
●有大量不适配容器平台的应用。运营商行业信息化建设较早,经过多年的发展,积累了很多应用,这些应用多是采用集中式架构的有状态应用,虽然可以将这些应用打包成容器镜像,但简单地重新打包并不能充分发挥容器平台的弹性优势,需要同时管理物理机、虚拟机和容器环境,这会增加运维管理的复杂性。而创新型应用,如一些面向互联网、物联网的新业务,适于优先部署到容器平台。
●新技术带来的学习成本与选择成本较高。相对于虚拟化技术,容器平台的门槛更高,需要掌握大量的新知识、新技能。容器生态环境中充斥着大量的开源组件,这些开源组件功能良莠不齐,发展路线与前景各有不同,路线选择错误可能导致不断变换跑道的麻烦。如果全面拥抱容器开源体系,企业需要投入大量人力跟踪前沿技术发展方向,解决开源组件的未知缺陷。
●如何保障容器平台的可靠性与安全性。要在生产环境中采用容器技术,必须有一套经过验证的、成熟的技术平台。相对于虚拟化,以容器技术为核心的应用平台还处在发展阶段,相关的工具和解决方案有待完善,原有的管理方法可能不适用于容器平台,确保容器平台安全可靠地运行,是一项不可忽视的任务。
●如何构建适应容器应用运行的运维体系。容器化改造之后,一台宿主机上运行的容器可以成百上千,如何对这些容器的故障进行维护,需要对原有的运维流程、团队与技术工具进行更新升级以适应新的业务情况。现在主流的容器技术厂商可以提供包括K8S、多资源池管理、容器网络管理和容器资源自动化运维的整体解决方案,可以帮助我们快速建设容器云并提供相关的容器运维知识转移,保障运营生产的安全和稳定。
中国电信开发 运维一体化的容器
在计划建设容器云的时候,中国电信选择建设一个支撑容器应用部署和运维的容器云。该容器云可以支持微服务化的应用和各种云原生应用(如图2所示)。
图2 容器云平台总体架构
首先确定K8S技术平台的选型。将容器平台定位于新应用的运行平台,帮助解决传统上应用发布慢、弹性差、资源利用率低三个问题,更加适应新兴云原生类应用微服务化、分布式的开发与部署架构。运营商等可以先试点后推广,积累云原生类应用容器平台建设与运行经验,再逐步推进旧应用改造,迁移到容器平台上来。
选择主流的支持K8S容器技术方案,在麓谷与荷花园两个数据中心之上构建跨数据中心多活的K8S容器平台。跨数据中心的架构让应用在两个数据中心容器中平衡部署,利用容器调度平台让应用节点在两个数据中心平滑移动,同时保证了高可用及容灾场景。
在容器网络与安全方面,可以采用SDN的技术方案,替代开源的容器网络组件,提高全网容器的安全隔离及网络流量可视化的能力。
利用可视化自动化与智能化手段,实现新旧应用、虚拟机与容器、传统部署架构与微服务架构等混合异构环境统一监控统一运维。
将容器平台能力包装成自动化服务,与现有IaaS服务平台及ITIL运维平台整合。形成完整的基础架构即代码(Infrastructure as a code)能力,为DevOps的推进奠定坚实的基础。
容器平台建设初步实现了敏态稳态双模业务一体化运维,有利地支撑了开发运维一体化进程。后续我们将进一步围绕容器平台推动跨平台一体化融合、智能化运维提升以及新技术业务赋能等工作,加快网络智能化、业务生态化、运营智慧化步伐。