云原生:谷歌、Kubernetes、云原生计算基金会(CNCF)之纠葛
Author:zhoulujun Date:
云计算发展史
2000 年以前,当时流行的技术是以 Sun 公司为代表的非虚拟化技术,在需要运行应用时,首先要购买物理服务器,然后在服务器上运行它。
1 年后,也就是 2001 年,VMWARE 的虚拟化技术得到普及,我们能够在一台物理机上运行多个虚拟机了,虚拟机成为了程序运行的载体。
2006 年,Iaas(基础设施即服务) 诞生了,AWS 创建了以 EC2 服务器为代表的云计算和弹性计费的方式,用户在使用的时候可以按小时付费,AMI(Amazon Machine Image)镜像成为了程序打包和运行的普遍方式。
3 年后,也就是 2009 年,PaaS(平台即服务)诞生了,以 Heroku 为代表的 PaaS 平台变得非常流行,这时候,基础设施层面产生了巨大的变化,以 Buildpack 为代表的技术已经开始有了容器的概念,尽管这个过程并不透明。在当时,交付应用只需要执行一条命令简直是一项魔法技术。
2010 年,IaaS 层的开源方案 OpenStack 诞生了,它由 AWS 和 VMWARE 完成,至今 OpenStack 在私有云的市场仍然是非常流行的解决方案。2011 年,Cloud Foundry 发布了开源的 PaaS 解决方案,它是 Heroku 的开源替代方案。
2013 年,最著名的 Docker 技术诞生了,Docker 整合了 LXC、联合文件系统和 cgroups 技术并创建了一个容器化标准,它是有史以来普及率最快的开发者技术,现在仍然被全世界的开发者使用。Docker 技术实现了隔离、可重用和不可更改性,它彻底改变了应用的构建、分享和交付方式。
2010-2017年可以算是云计算基础软件创新的黄金几年,这几年大家一直在围绕虚拟化和云计算花式创新,从XEN、KVM一路玩到Eucalyptus、CloudStack、OpenStack,从LXC、Docker玩到Yarn、Mesos、Swarm和Kubernetes。
云的生态逐步发展壮大……
伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生
到底什么是云原生?
云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。
所以云原生从字面意思上来看可以分成云和原生两个部分。
云是和本地相对的,传统的应用必须跑在本地服务器上,现在流行的应用都跑在云端,云包含了IaaS,、PaaS和SaaS。
原生就是土生土长的意思,我们在开始设计应用的时候就考虑到应用将来是运行云环境里面的,要充分利用云资源的优点,比如️云服务的弹性和分布式优势。
云原生本质上是一套技术体系,或者说是一种方法论,是互联网技术发展到现在的一种被广泛采纳的业务形态。
通过拆解云原生,更有利于发现其中的端倪
云(Cloud),表示应用程序部署在云端,这个好理解
原生(Native)则表示具体的应用程序从设计之初,就着眼于在云端部署,区别于后期为环境迁移所做的各种适配。
那么这就简单了,云原生的目标就是,应用“生而为云”,能够与生俱来的适应云的特征、云的架构,在云上实现最佳的运行状态,从而充分利用和发挥云平台所特有的弹性+分布式优势。
原来广受团队苦恼的性能、负载、安全性、扩展性等问题,都不复存在了,因为这一切都让那朵云给收入瓶中了。比如腾讯的套装服务:
云原生从应用部署、管理、数据支撑、场景服务等各个环节的能力支撑,让“软件行业”更好的服务于“行业软件”,让各行各业都能更加轻松的享受云的支撑和数据的赋能。
如何开发出适合于在云环境里面部署的程序呢?
其实主要是需要遵循几个开发原则:
云原生计算基金会(CNCF)
云原生计算基金会(CNCF,英文全称为Cloud Native Computing Foundation)是Linux基金会旗下的非盈利组织,来推动云原生计算的发展,帮助云原生技术开发人员来构建出色的产品。
CNCF的成立与一个重要项目密切相关,那就是Kubernetes。
K8s最早是谷歌的内部容器编排项目Borg,为了推进其发展,谷歌决定将其开源,于是跟Linux基金会在2015年一起创办了CNCF。
当年谷歌内部一直用于编排容器的Borg项目开源了,为了该项目更好的发展,谷歌与Linux基金会一起创办了CNCF。同时,谷歌把Borg用Go语言重写,更名为Kubernetes并捐赠给了CNCF。
虽然Prometheus不像Kubernetes含着金汤勺,有谷歌背书,但它也与谷歌有着很深的渊源。因为谷歌将其作为BorgMon监控系统的开源版本。
CoreDNS是DNS服务器解决方案,它既能作为独立的DNS服务器,也作为Kubernetes的默认向前的DNS服务器。它最早由前谷歌的可靠性工程师Miek Gieben创建,在2017年由CNCF托管成为孵化项目,于2019年初成为了毕业项目。
Vitess是用于MySQL水平扩展的数据库集群系统。Vitess在2010年诞生于Youtube,一直是其数据库基础架构的核心组件。Vitess最大优势在于可降低企业使用MySQL成为云原生企业进入的门槛。Vitess现在支持MySQL,Percona和MariaDB数据库。Kubernetes发布1.0后,它一直为Kubernetes提供支持,现在也与etcd,gRPC和Prometheus等许多其他云原生项目集成。
CNCF通过建立社区、管理众多开源项目等手段来推广技术和生态系统发展。
云原生计算技术栈非常宽阔,它囊括了存储、计算、编排、调度、CI/CD、DevOps、服务治理、服务网关等诸多领域。因此与之相对应的开源项目就非常多。CNCF基金会与Linux基金会、Apache基金会类似,负责社区的管理、技术的推广,使得云原生领域的技术不断成长。
截至目前,CNCF聚集的会员超过15万,项目贡献者超过8.5万人。
很多公司很乐于把自已的项目贡献给CNCF,这样能吸引到更多的专家参与进来一起开发。只有足够优秀的项目CNCF才会接纳,源创公司会在该项目上保持技术上的领先,也能扩大技术影响力,所以公司愿意分享项目到CNCF。
CNCF的愿景: 为云原生软件构建可持续生态系统
CNCF的鸿沟理论
CNCF基于著名的鸿沟理论开展项目管理,将项目分为沙盒项目(Sandbox)、孵化项目(Incubating)、毕业项目(Graduated)。分别对应于鸿沟图的创新者、早起采用者和早期多数者。
基于该理论,CNCF技术监督委员会制定了严格的项目管理制度和项目毕业标准,保证毕业的项目具有采用率、健康的变化率以及来自多个组织的提交人等。
目前,已经有10个项目从孵化到成熟,最终进入到毕业阶段。这10个项目分别是Kubernetes、Prometheus、Envoy、CoreDNS、containerd、TUF、Jaeger、Fluentd、Vitess,还有刚刚毕业的项目Helm。
处于孵化阶段的流行项目有: CRI-O、gRPC、Argo、Dragonfly、KubeEdge、Thanos等。
整的项目列表查看地址: https://www.cncf.io/projects/
CNCF全景图
Trail Map只是对云原生应用做一个大体的梳理,而每个阶段所关联的服务商和产品等详细信息则需要从全景图Landscape中确认。CNCF有一个很大的愿景,而且包含的内容也越来越丰富,截止2021年4月3号,全景图已经包含了云原生应用所关联的方方面面,共计913个卡片,与之对应的开源项目一共达到了2,530,085个star, 市值为14.4T和资金156.8亿美元。
原始图片地址: /uploadfile/2024/1022/webp
分模块查看地址: https://landscape.cncf.io/
谷歌为何背弃亲手“扶植”的 CNCF?
如今的云原生发展浪潮可以说完全起源于 Google 的技术理念。从奠定云计算技术基础概念的“三大论文”,再到如今一统云原生基础设施建设的 Kubernetes 生态,Google 的技术一直引领着全球云计算的发展。
然而每一项先进的技术要想换来预期的收益,首先要做的事情就是教育市场,让市场认可该技术的优势。而当时的 Google 要做的,就是想办法改变人们的开发理念。于是,Google 将核心技术 borg 开源,也就是现在的 Kubernetes,同时联合 Linux 基金会创建 CNCF,为相关技术生态制定行业标准。这一系列举措成功让 K8s 成为云原生基础设施建设生态核心,CNCF 也跻身全球最成功的开源基金会行列。
然而,拥抱开源也让 Google 逐渐失去了对 Kubernetes 的控制,同时也让整个行业的技术水平趋于一致,Google 的技术优势也就消失了。随后,CNCF 迎来 AWS、微软 Azure 、阿里云等公有云厂商。各公有云厂商都推出了基于 Kubernetes 的混合云解决方案,谷歌云的市场占有率反而不及 AWS 与 Azure 。根据 Nucleus Research 在 2019 年进行的调查显示,82% 的云端 Kubernetes 工作负载运行在 AWS 云服务之上。
业界猜测,Google 近来在开源领域的保守举动意在避免手中的 Istio 等重量级开源项目重蹈 Kubernetes 的覆辙。
CNCF 职业认证
业认证是 CNCF 最重要的板块之一,在为开发者提供认证的同时,CNCF 也能从中获得收入。
目前,CNCF 的职业认证有以下几个。
CKA:Kubernetes 管理员认证
CKAD:Kubernetes 开发者认证
CKS:Kubernetes 安全认证
KCNA:Kubernetes 管理员助理认证
PCA:Prometheus 管理员认证
KCSA:Kubernetes 安全助理认证
在很多 DevOps、SRE 和运维开发工程师的招聘描述上,都需要CKA 和 CKAD 认证
参考文章:
云原生计算基金会(CNCF)毕业的10大开源项目,都是什么来头? https://zhuanlan.zhihu.com/p/362727936
到底什么是云原生?CNCF又是个什么鬼? https://zhuanlan.zhihu.com/p/362370819
IBM和谷歌开撕,谷歌为何背弃亲手“扶植”的 CNCF? https://zhuanlan.zhihu.com/p/159067926
转载本站文章《云原生:谷歌、Kubernetes、云原生计算基金会(CNCF)之纠葛》,
请注明出处:https://www.zhoulujun.cn/html/tools/Cluster/kubernetes/9295.html