云原生技术发展历程
云原生
云原生从字面意思上来看可以分成云和原生两个部分。
云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。
原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的弹性和分布式优势。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。
发展历程
云原生,其实不是一个全新的概念,而是在整个云计算发展历程中的对理念的更新和延伸。站在一个用户的角度,从时间线上看,整个云计算的技术演进是朝着越来越灵活的方向发展。
2000年SUN公司提出非虚拟化硬件,2001年VMware实践虚拟化的产品,2006年亚马逊提出IAAS(基础设施即服务),指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。2009年 提出Paas(平台即服务),将软件研发的平台作为一种服务,以SaaS的模式提交给用户。2010/2011是一个开源之年,各大厂商都推出了自己开源产品比如openstack,Cloud Foundry。2013年Docker进入大众的视野,Docker 是一个开源的应用容器引擎,容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。2015年正式进入云原生元年,未来云原生一切。
现在云原生的生态已经及其庞大,云原生生态圈划分为上下五层及共用两层,上下五层包括应用定义与开发层、编排与治理层、运行时层、供应保障层及云设施层,共用层包括观察与分析、平台。各大厂商已经纷纷涉足云原生的产品,国内大厂有华为云、阿里云、腾讯云等。
云原生生态图
2015年CNCF只有Kubernetes一个项目,到了到如今80多个官方项目,以及整个云原生生生态内容丰富的宏大版图。
在中国,云原生的生态也飞速发展,CNCF的会员数量也从2015年的1家初创&白金会员发展到今天60家成员单位。
云原生这么受欢迎,与它先进的理念是分不开的 ,总得来说有以下几大核心理念:
利用容器和服务网格等技术,解耦软件开发,提高了业务开发部署的灵活性和易维护性
以Kubernetes为核心的多层次、丰富的开源软件栈,被各大厂商支持,用户选择多,避免厂商绑定
以Kubernetes为核心的松耦合平台架构,易扩展,避免侵入式定制 - Kubernetes已被公认是platform for platform
中心式编排,对应用和微服务进行统一的动态管理和调度,提高工作效率和资源利用率
云原生技术理念
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行可弹性拓展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API
1.容器
有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。
2.微服务
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常
有自己的堆栈,包括数据库和数据模型;
通过REST API,事件流和消息代理的组合相互通信;
它们是按业务能力组织的,分隔服务的线通常称为有界上下文。
3.服务网格
服务间通信的基础设施层。可以将它比作是应用程序或者说微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控。
4.不可变基础设施
不可变基础设施是一种基础设施模式,其中服务器在部署后永远不会被修改。如果需要以任何方式更新、修复或修改某些内容,就先对公共镜像进行修改,然后用镜像构建新服务器来替换旧服务器。经过验证后,新服务器投入使用,旧的服务器就会下掉。
5.声明式API
所谓“声明式”,指的就是我只需要提交一个定义好的 API 对象来“声明”,我所期望的状态是什么样子
“声明式 API”允许有多个 API 写端,以 PATCH 的方式对 API 对象进行修改,而无需关心本地原始 YAML 文件的内容
Kubernetes 项目才可以基于对 API 对象的增、删、改、查,在完全无需外界干预的情况下,完成对“实际状态”和“期望状态”的调谐(Reconcile)过程
声明式 API,才是 Kubernetes 项目编排能力“赖以生存”的核心所在。
云原生技术体系及CNCF核心项目
CNCF,全称Cloud Native Computing Foundation(云原生计算基金会),口号是 坚持和整合开源技术来编排容器作为微服务架构的一部分 ,其作为致力于云原生应用推广和普及的一支重要力量,不论您是云原生应用的开发者、管理者还是研究人员都有必要了解。
CNCF,云原生计算基金会,已成为云计算领域新的“标准”制定者。
在奉行事实标准的IT界,云技术发展多年的今天:开源社区已然是云原生技术的关键推动者,同时也是相关技术标准的制定者。我们知道云原生飞速发展的背景,解决应用的标准化问题:下层基础设施不统一,如何构建通用的弹性扩缩容能力,以及分布式监控、日志和追踪等等
核心技术体系
云原生的技术版图
CNCF的项目成熟度模型
CNCF核心项目
目前有15个毕业项目,21个孵化项目,46个沙盒项目,值得一提的是,CNCF的Sandbox经过流程优化之后,2020年增长速度明显提升。
云原生平台技术架构发展方向:以“应用”为中心的云“OS”,统一计算、统一治理、统一运维、全局视图与管控。
从2015年的1.0发布至今,Kubernetes已经有20多个大版本发布,各项功能特性和接口API都已经趋于稳定,K8s已经进入了成熟期。虽然严格意义上的K8s核心项目迭代在逐渐放缓,但是整个云原生技术栈将会进入更高速发展的阶段,围绕K8s的技术栈将会与云计算的应用、平台、设备各层次进行更深入的结合。
各类现代化的应用都将会运行在K8s之上,不仅仅是前些年已经备受关注的以互联网App、WebService为代表的无状态应用,而新型的诸如大数据、AI、分布式数据中间件等等有状态应用,以及新型的边缘应用也将会普遍运行在K8s之上,从而K8s将完成对各类现有平台的归一化,成为一个统一的应用运行的分布式云原生平台。而为了更好地支撑现代化应用以及统一的基础技术平台,下层的各类设备包括虚拟化计算/网络/存储、裸金属服务器以及专用芯片如AI、高性能网络、高性能存储等等都会与K8s更紧密的配合,围绕云原生应用,通过软硬一体化的方案来提供更高性能、更稳定可靠、更高效的基础设施。与“应用、平台、设备”三个层面的协同,意味着云原生技平台将真正成为 以“应用”为中心的云“OS”。
总结
随着虚拟化技术的成熟和分布式框架的普及,在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势。,经过多年的发展,云原生的时代已经完全到来。