在整个2018年,有很多关于数字化转型的讨论。以云、大数据、人工智能、物联网和区块链等数字技术所驱动的企业数字化转型,终的目标是什么?这就是云原生的数字企业,或者称为数字原生企业。简单的理解,数字原生企业,其核心竞争力在于大规模的云软件的开发、运维及运营能力。互联网公司和共享经济平台企业是数字原生企业的代表之一,而像微软这样从传统软件销售转向云服务运营的高科技企业也是数字原生企业的代表之一,更多的传统企业都在试图走上数字服务的商业模式。
2011年8月,的硅谷Andreessen Horowitz风险投资基金联合创始人Marc Andreessen在《华尔街日报》上发表了“软件正在吞噬世界”的观点文章;2017年7月,Linux基金会副总裁、CNCF原生云计算基金会首席运营官Chris Aniszczyk在2017软博会的中国开源产业峰会上表示“开源软件和人工智能正在吞噬世界”。而微软CEO Satya Nadella在谈论到本轮数字化转型的时候曾表达观点:未来所有的企业都将是软件企业。Nadella的话有两层理解:软件成为企业对内的核心能力;软件和数字服务成为企业对外的核心业务。
数字化转型的目标是让软件成为企业的核心能力,同时把软件作为数字服务对外输出成为企业的核心业务,终成为数字原生企业。在这个过程中,就必须要提到CNCF云原生基金会。CNCF(Cloud Native Computing Foundation)成立于2015年12月,该基金会由Google主导组建,隶属于Linux Foundation,是一家非营利性组织。CNCF为Github上高速发展的开源项目提供完全中立的平台,并促进业界开发者、终用户以及供应商之间的紧密合作。
在 2018 开源峰会(OSLS)上,CNCF 基金会、Google Cloud 工程总监 Chen Goldberg 宣布,Kubernetes 成为个从 CNCF 毕业的项目。这也意味着该开源项目已经成熟并且足够灵活,可在任何行业、各种规模的公司中大规模地管理容器。Kubernetes是整个云原生计算的核心、灵魂和平台级技术,正因为Kubernetes技术、商业和生态的成熟,才导致了2019年开始全面进入云原生技术的商业化之年。
CNCF:多云环境中落地云应用
在CNCF的官网上,定义了CNCF的使命:创建一个可持续的生态体系,围绕高质量的开源项目群体而培育开源社区,确保容器成为微服务架构的基础之一。作为一个开源软件基金会组织,CNCF致力于推广“云原生计算”并确保其可持续性,而“云原生计算”是一个用于部署微服务应用的开源软件堆栈,其方式是把各个组件都打包到容器中并动态调度容器以优化计算资源利用率。
CNCF对云原生(Cloud Native)的初始定义包含以下三个方面:应用容器化、面向微服务架构、应用支持容器的编排调度。到了2018年,随着云原生生态的不断壮大,所有主流云计算供应商都加入了该基金会,而且云原生有意兼容非云原生应用的部分。随着CNCF基金会中的会员以及容纳的项目越来越多,CNCF为“云原生”进行了重新定位:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。
云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。CNCF致力于培育和维护一个厂商中立的开源生态系统,以推广云原生技术。
进一步理解,CNCF 所关注的“云原生计算”更侧重于云软件开发后的交付与部署,主要针对以容器为基础的云软件部署,即把一个云应用软件所需要和依赖的底层软件组件打包到一个一个的标准化容器中,而容器可以把一次编写的云应用程序部署到从本地数据中心到公有云的多种底层计算环境中,进而由无数的“小”容器横向连接起来就形成了云软件的规模化扩展能力。
在容器化部署的过程中,容器的调度技术和能力就显得尤为重要,相当于是应用层的“操作系统”,其中一种已经取得市场主导地位的容器调度与编排技术就是Kubernetes。
Kubernetes:云原生应用的“底座”
Kubernetes脱胎于谷歌自己的容器调度与编排技术Borg,是谷歌对外输出的技术并捐献给开源社区,谷歌在2016年的时候透露可以在一周的时间内启动超过20亿个容器,可想而知Kubernetes的技术实力。
由于有谷歌在背后的大力支持,Kubernetes在开始的容器调度与编排技术之争中脱颖而出。2018年,所有领先的公有云和私有云提供商都对Kubernetes开源技术进行了大量投资。AWS、微软、谷歌、IBM、Oracle、阿里云、华为云等都有各自的Kubernetes引擎,Red Hat、思科、VMware等公司也是如此。2018年底,微软甚至宣布自2020年1月31日起,将不再支持其Azure容器服务(ACS)。ACS正在被微软的Azure Kubernetes Services(AKS)取代,后者是微软在2017年推出的一项服务。
随着Kubernetes的“毕业”,其代码也处于稳定状态。根据source{d}的源代码分析,Kubernetes的核心代码已经稳定在175万行代码,公开的应用程序接口也稳定在16000个,开源社区对于Kubernetes的贡献都在2018年降低了,也就意味着Kubernetes代码的成熟与稳定,可供进一步商业化应用。OpenShift社区在2019年初发表预测认为,Kubernetes于2014年开源并被企业团队用于生产环境中到现在已被普遍接受和认可,Kubernetes正在进入第三个发展阶段,即用户正在寻求各种方法来实现Kubernetes在生产环境中的自动化运维操作。
除了获得业界几乎所有技术厂商的支持外,Kubernetes成熟的另一个明显标志是围绕其成长起来的丰富的开源技术生态体系,包括监控管理Prometheus、服务代理Envoy、远程过程调用gRPC、容器网络接口CNI、基于DNS的服务探索CoreDNS、打包环境Helm等等。这些丰富的周边工具,丰富了对Kubernetes的管理、监控、优化和兼容等,完善了Kubernetes的可应用场景。
当然,更重要的是来自用户的认可。CNCF在2018年8月发布的一份截止到2018年6月的半年度企业用户调查报告中(受访者主要为欧美企业),称自2017年12月的调查以来,已经有73%的受访用户在生产环境中使用了容器,这比2016年3月的调查结果相比提高了50%;容器可以运行在AWS、谷歌云、微软云、OpenStack和VMware等多种公有云、私有云和混合云环境中;而容器的管理工具中,有83%的受访者选择了Kubernetes,远远高于第二位的Amazon ECS(24%)和第三位的Docker Swarm(21%)。再加上2018年VMware对于容器和Kubernetes的大力投入,Kubernetes也在私有云环境中得到了强力支持。现在,企业可以在私有、公有、混合或多云部署等广泛的计算环境使用Kubernetes。
除了Kubernetes自身的技术与商业生态外,还有大量的厂商在围绕Kubernetes外围进行扩展。例如AWS在2018年11月发布的Firecracker,这是一个使用基于Linux内核的虚拟机或KVM的轻量级开源虚拟机监控器。Firecracker可以在无服务器云中创建和管理安全的多租户容器和Lambda功能。它允许像containerd这样流行的容器运行时能够将容器作为microVM进行管理。通过这种方式,允许开发人员可以利用虚拟机的工作负载隔离,同时获得在Kubernetes上运行容器的效率。而这并不是CNCF所关注的范围,但AWS把Kubernetes容器与无服务器和虚拟化技术进行了连接,可以满足企业的多种需求。此外,OpenShift社区认为,随着Kubernetes在裸机上运行的发展进步,企业将能够充分利用直接在裸机服务器上部署Kubernetes所带来的更高速度和效率。换句话说,Kubernetes将有机会跨传统的裸机、虚拟机以及新兴云原生环境运行,统一异构的计算环境。
值得一提的是,CNCF还对外提供Kubernetes的培训和认证,包括2017年推出的免费Kubernetes MOOC课程。2017年9月,CNCF推出了官方的Kubernetes系统管理员认证(CKA),而Kubernetes认证服务商(KCSP)则认证了那些可以提供Kubernetes支持、咨询、专业服务以及培训的服务商。现在,CNCF还提供官方认证的Kubernetes应用开发商(CKAD),认证那些可以为Kubernetes设计、构建、配置和暴露云原生应用的开发商能力。CNCF还设法与整个软件产业的主要供应商达成一致,在Kubernetes项目上不出现分支(forks),以确保所有Kubernetes软件的一致性,CNCF也为供应商的产品和服务提供一致性认证。
截止2018年底,经CNCF认证的Kubernetes商业发行版供应商达到近50家、29家认证的托管服务商、9家认证的安装程序提供商、15家认证的PaaS/Container服务提供商、71家认证的Kubernetes服务提供商、18家认证的Kubernetes培训提供商。这样庞大的供应商体系,足以支撑一个完善的Kubernetes技术商业生态。
商业化运作云原生项目
截止2018年底,CNCF拥有300多名成员,包括世界上大的公有云和企业软件公司以及数十家创新型初创公司。
其中,CNCF白金会员有AWS、谷歌、微软、IBM、Pivotal、Oracle、SAP、阿里云、华为、京东等共21家企业;黄金会员有百度、中兴、腾讯、NEC、SUSE、Salesforce、NetApp等共13家企业;银牌会员共有255家企业。CNCF终端用户社区已经有30位成员,包括滴滴、京东等企业;而终端用户支持成员已有37家企业;学术和非营利组织成员共有11家。
那么,CNCF是如何保证“毕业”的开源云原生项目拥有足够的能力应用于广泛的商业场景?在Github上公布的CNCF的“宪章”里,有详细的描述(2018年12月更新版本):
CNCF 在开源社区的基础上发挥着作用:(A)项目管理:确保技术可用于社区并且不受利益纷争的影响;确保技术的品牌(商标和标识)得到社区成员的关注和使用,特别强调统一的用户体验和高水平的应用程序兼容性。(B)促进生态系统的发展和演进:评估哪些技术可以纳入云原生计算应用的愿景,鼓励社区交付这样可以推进总体愿景的技术并进行集成;提供一种方法来培育各个部分的通用技术标准。(C)推广底层技术和应用定义及管理方法,包括活动和会议、营销、培训课程和开发人员认证。(D)通过使技术可访问和可靠性,为社区服务:旨在通过对参考架构进行明确定义,为每个组成部分提供完全集成和合格的构建。
同时,CNCF遵循以下原则:(A)快速,基金会的初衷之一就是让项目快速的发展,从而支持用户的积极使用;(B)开放,CNCF 是以开放和高度透明为高准则,而且独立于任何其它团体运作,CNCF根据贡献的内容和优点接受所有的贡献者且遵循开源的价值观,CNCF输出的技术可以让所有人使用和受益,技术社区及其决策保持高度透明;(C)公平,CNCF极力避免不必要的影响、不良行为、以及“付费参与游戏”的决策;(D)强大的技术身份,CNCF实现并保持高度的自身技术认同,并将之同步到所有的共享项目中;(E)清晰的边界,CNCF制定明确的目标,并在某些情况下确定什么不是基金会的目标,帮助整个生态系统有效共存,让人们理解创新的重点所在;(F)可扩展,能够支持从小型开发环境到企业和服务商规模的所有部署规模,这意味着在某些部署中可能不会部署某些可选组件,但总体设计和体系结构仍应适用;(G)平台中立,CNCF所开发的项目并不针对某个特定平台,而是旨在支持各种体系结构和操作系统。
CNCF“宪章”还设计了市场营销委员会、IP策略、反垄断条约等内容,较为全面的保护了云原生技术参与企业的利益和共享利益。通过这些努力,CNCF旨在让云原生技术无处不在。
快速成熟的开源云原生技术
CNCF为重要的职责,就是负责托管和培养云原生软件堆栈的项目,包括Kubernetes、Prometheus等。
每个受托管和培养的CNCF项目都有成熟度等级,申请成为CNCF项目的时候需要确定项目的成熟度级别(Maturity Level)。成熟度级别包括以下三种:sandbox(初级)、incubating(孵化中)、graduated(毕业)。所有项目的等级划分完全由TOC投票决定。投票采取fallback策略即回退策略,先从别(graduated)开始,如果2/3多数投票通过的话则确认为“毕业”,如果没通过则进行下一低级别的投票,如果一直到sandbox级别都没得到2/3多数投票通过的话,则拒绝其进入CNCF项目。
除了Kubernetes已经毕业之外,Prometheus于2018年3月毕业、Envoy于2018年11月毕业。
Prometheus是一套开源的监控&报警&时间序列数据库的组合,开始由SoundCloud公司开发并于2012年开始编写代码,之后许多公司和组织接受和采用Prometheus,便将它独立成开源项目。2016年,Prometheus加入CNCF,成为继Kubernetes之后的第二个托管项目,Google SRE的书内也曾提到过与BorgMon监控系统相似的实现是Prometheus。现在常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。因为越来越多的企业开始使用容器,因此容器监控变得日益重要。CNCF首席运营官Chris Aniszczyk 表示,监控和跟踪能力是云原生的重要部分,一个成熟的监控系统可以让用户了解系统内部情况,并在故障出现时及时发布警报。现在,Prometheus已经具备了一定的成熟度和稳定性,供应商可以放心地将它集成到商业平台中。
Envoy是第三个从CNCF毕业的项目。Envoy是一个针对Service Mesh服务网格的Proxy代理解决方案,是L7层的代理与通信总线技术,主要用于大型现代面向服务的架构。Envoy的理念是网络应该向应用透明,如果网络和应用都出现问题的时候,应该很容易定位问题源。源于Lyft贡献的技术,Envoy是高性能的开源边缘、中间和服务代理,该项目通过管理微服务之间的交互以确保应用程序性能,有助于简化向云原生架构的过渡和运维。Envoy项目不断增长的用户社区包括Airbnb、http://Booking.com、eBay、F5、Google、IBM、Lyft、Medium、Microsoft、Netflix、Pinterest、Salesforce、Square、Stripe、腾讯、Twilio、Verizon等。雅虎日本子公司Actapio与Heptio(后被VMware收购)合作,利用Envoy代理构建开源项目Heptio Gimbal,该项目可以处理私有云中数百个Kubernetes和OpenStack集群的大规模服务暴露(Ingress)。在Envoy的帮助下,能够大幅加快Actapio的软件开发和发布周期。对于谷歌来说,Envoy不仅是Istio的关键构建组件,也是几个谷歌云网络服务的关键组件。而Istio则来自谷歌、IBM和Lyft,是集大成的Service Mesh服务网格实现技术,可以进行大规模的微服务通信管理。
目前,CNCF正在孵化的项目有17个,包括Linkerd、Fluentd、etcd等开源项目;初级项目共有12个,其中包括阿里云的Dragonfly等。根据CNCF的2018年6月半年度用户调查,即便是正在孵化中的云原生技术也在企业生产环境中得到了应用:Containerd的使用率为45%、上次调查为18%;CoreDNS的使用率为36%、上次调查为7%;Envoy的使用率为24%、上次调查为4%;Fluentd的使用率为57%、上次调查为38%、gRPC的使用率为45%、上次调查为22%、Jaeger的使用率为25%、上次调查为5%;Linkerd的使用率为16%、上次调查为3%、OpenTracing的使用率为21%、上次调查为8%。
可以看出,在短短半年时间内,CNCF所扶持的云原生开源技术在企业生产环境中得到了强力应用,平均使用率较上次调查增长了200%。
云原生技术全景图
当然,整个云原生计算领域并不仅仅是CNCF所负责托管和孵化的这些项目。CNCF提供了建议的整个云原生计算技术全景图,实际上就是面向云原生应用的“操作系统”上层架构,又称为aPaaS:以容器技术为核心,分为运行时(Runtime)和 Orchestration 两层,Runtime 负责容器的计算、存储、网络,包括云原生存储、容器运行时、云原生网络等;Orchestration 负责容器集群的调度、服务发现和资源管理,包括调度与编排、协调与服务发现、远程程序调用、服务代理、API网关和服务网格等。
在运行时(Runtime)之下为基础设施和配置管理,作为容器底层技术。容器可以运行在各种系统上,包括公有云、私有云、物理机等;这之上为容器的“计算资源供应层”,提供容器运行所依赖的自动化部署工具、镜像工具、安全工具等运维系统。而在Orchestration之上为应用层,即“App定义与开发层”,包括数据库、流与消息、应用定义和Image构建、持续集成与交付等。
在云原生计算技术全景图的各个组成部分中,既有CNCF所托管和孵化的开源项目作为可选实现技术之一,也有其它开源项目和技术商提供的解决方案,例如数据库部分既有CNCF在孵化的Vitess(可横向扩展的MySQL数据库集群),也有Oracle、IBM、SQL Server、MariaDB、Redis等可选,这些可选技术之间既有竞争关系也有互补关系,组合起来就可以实现一个完整的支撑云原生应用的aPaaS操作系统。
在2018年之前,整个云计算领域围绕着底层计算资源的管理形成了共识:OpenStack、AWS、微软Azure、谷歌云、IBM云、阿里云、VMware SDDC等IaaS软件业已成熟,而面向DevOps的云原生应用PaaS支撑技术则在2018年全面成熟起来,这就是CNCF所代表的云原生开源项目群体。
随着Kubernetes的商业化成熟,IaaS、PaaS和SaaS三层云计算技术体系将在未来几年形成全面的技术体系和供应商阵营,向上支撑起可以大规模、工业标准化运作的企业APP或SaaS开发、运营和管理能力,企业级APP时代即将全面繁荣。而2019年,将无疑是云原生计算的商业化元年,DevOps时代将真正到来。(文/宁川)