随着容器等轻量级高效率虚拟化技术的兴起与微服务理念的普及,云计算正向着“云原生”(Cloud Native)的方向发展。为了适应这个趋势,网络也需要进行相应的改造以更好地支撑云原生平台大规模的弹性能力与服务自愈和的特性。开放网络的技术将在云原生场景中得以广泛应用。
本文根据周雍恺博士在NCDC大会上的演讲报告《云原生视角下的开放网络》整理而成。
何谓“云原生”
从2015年开始,微服务、CI/CD、DevOps、Serverless、SRE等词汇大量涌现,一场云原生的运动正式拉开大幕。
云原生,从广义上来说,是更好地构建云平台与云应用的一整套新型的设计理念与方法论,而狭义上讲则是以docker容器和Kubernetes(K8S)为支撑的CNCF技术生态堆栈正在革新整个IT架构。我关注到本次大会还设了一个OpenStack开发者论坛,但是其中所有演讲议题都以容器或K8S为主,由此也可以印证,云原生的潮流势不可挡。
以Docker为代表的轻量级容器虚拟化技术,将成为今后企业应用发布的标准形态,横跨众多Linux甚至是Windows平台。
以Kubernetes(K8S)为代表的云原生编排系统,将成为分布式集群架构的核心操作系统。
当时硅谷的大佬们抛出云原生的提法,说明之前用云的方式存在很大问题,并不是原生的,主要体现为:
1)业务系统烟囱式的构建,项目经验无法沉淀复用,项目数据无法协作共享,IT治理难度较大
2)运维模式未有本质性的改变,虚拟化的出现使得物理资源无需运维,但是多出了运维虚拟机的负担,像服务高可用、自动伸缩、监控审计,这些在平台方面是没有保障的,还是需要人工介入
3)开发并未得到解放,开发人员在写程序时仍然需要考虑资源的使用情况,高可用的方案,还需要自己部署中间件,自己进行测试。
而随着云原生的出现,它理想的场景,一是IT的能力可以最大化的复用,能力层次化地构建,体现IT治理的成效。其次是最重要的可运维性,它包括云原生所强调的大规模横向弹性,自愈高可用性,平滑升级,可测量、容器化等特性。最后是开发友好性,越来越多的项目表明,能够吸引开发者的项目更容易成为主流,此外,CICD开发运维一体化的流程可以大大节省集成部署的时间与难度,提升生产效率。
再从数据中心架构演进的视角来看,最早的云计算是IaaS资源池化,以Vmware与OpenStack为代表的IaaS编排系统,对网络计算以及存储及资源进行统一的管理。这一阶段主要解放的是资源的运维,但是对于应用的构建、部署的方式,弹性伸缩与高可用保障并无本质性的改变。
第二阶段是PaaS的服务化,强调的是服务的能力,需要具备弹性与高可用的保障,而不是简单的提供IT资源服务,云原生的应用能够更好的利用云平台所提供的能力。云原生是整个IT架构与组织架构的真正向分布式云化的重构,其终极的状态是Serverless,应用彻底无需关心底层的资源运维。
第三阶段是更加现代化的数据智能阶段,它强调的是数据的运营能力以及内外部数据整合对外提供服务的能力,其中数据治理与隐私数据保护是数据运营的重要保障,系统架构设计则是以数据流为核心的,也是真正将企业的核心数据转化为生产力与生产价值的重要阶段。
当前的系统架构主要聚焦于第二阶段,第三阶段的大数据智能也在逐步开展,当然也是要以PaaS服务化作为基础的。作为PaaS服务化的核心,云原生目标就是能力堆栈可以复用,业务可以在有保障的云平台中快速上线。
云原生网络
第二大部分周博士介绍了云原生网络。由于云原生的内涵非常丰富,要理清其中的脉络,绝非易事。在此,主要从两个角度来对云原生网络进行说明:一是网络如何为云原生应用提供支撑,二是如何用云原生的设计理念来改进网络。第一部分称之为云原生组网,第二部分称之为网络的云原生化。
云原生组网
云原生对于网络的诉求,可以从平台以及业务两个方面来进行分析:
- 从平台方面而言,scale up的性能增益越来越有限,整个平台的体系向分布式弹性化的方向进行发展,在性能与可靠性上都可以有较高的保障。
- 而对于业务而言,整个的趋势则是从原来的单体应用向微服务化进行转变,从而能够更好的利用到云平台弹性可扩展的优势。前端的服务尽量无状态化,有状态的部分存储到后端的分布式存储之中,而至于服务间的可靠通信、流量均衡与故障自愈合等问题则交由平台来负责处理。
无论是平台的分布化以及业务的微服务化,都需要一个强大的网络来支撑大规模虚拟节点以及微服务之间的通信。
具体到技术层面,云原生对于网络的要求,一是基础的二三层网络联通,二是4~7层的高级网络功能。
二三层的网络主要实现K8S中CNI接口,CNI接口的定义相当简单,基本上就是创建一张二层的虚拟隔离网络,相当于IaaS中vpc网络的概念。具体的实现方案有calico,flannel,weave,contiv等,这些方案的介绍网上资料有很多。与以前虚拟机时代的vPC不同,云原生场景下,对于二三层网络的创建有很高的性能要求,每秒要创建上千个网络的end point,并且能够快速地弹性伸缩,还要具备自愈合的能力,此外为了将服务部署到多个集群中,网络还要需要提供跨K8S集群多活组网的能力。
4~7层的组网,则是ServiceMesh,中文翻译为服务网格。顾名思义,ServiceMesh里的通信,不再是点到点的通信,而是抽象成服务到服务之间的通信,每个服务由众多的计算实例所组成。这种以服务为中心的抽象,将弱化每个实例的IP而更加关注的是服务的虚拟IP,ServiceMesh的本质是提供安全、可靠、灵活、高效的服务间通信。有文章将ServiceMesh称之为下一代的SDN,有一定的道理,但是它也离不开基础二三层网络的联通。ServiceMesh将会提供一些更加高级的网络功能,例如有状态的通信..........................................................
原文地址:https://www.cnblogs.com/sdnlab1509/p/11196255.html