在 Kubernetes 五岁生日之际,本文简单回顾了 Kubernetes 过去几年的发展历史,并预测未来可能的发展方向。
自 2014 年 6 月开源以来,Kubernetes 在众多厂商和开源爱好者的共同努力下迅速崛起,时至今日已成长为容器管理领域的事实标准。Kubernetes 极大推动了云原生领域的发展,被称为影响云计算未来 10 年的技术,如今在容器圈提到 Kubernetes,可谓是无人不知无人不晓。
1、Kubernetes 的发展历史
1.1 第一阶段:出身豪门、大厂背书
Kubernetes源于 Google 内部的 Borg 项目,经 Google 使用 Go 语言重写后,被命名为 Kubernetes,并于 2014 年 6 月开源。
Kubernetes 希腊语为“舵手”,致力于管理数以万计的容器集群,开源之前在 Google 内部的项目名为“九之七项目”(Project Seven of Nine),这也正是 Kubernetes 的 Logo 有七条边的寓意。
一方面,Kubernetes 的创始人均为 Google 的天才工程师;另一方面,该项目源自 Google 的 Borg,而 Borg 的能力已在 Google 内部得到充分验证。因此,Kubernetes 可以说天生自带光环,自出生之日起,就受到了各大 IT 科技巨头的追捧, RedHat、华为、IBM、微软、VMware(排名不分先后)等企业迅速加入社区贡献者行列。
1.2 第二阶段:三足鼎立
Google 之所以选择将 Kubernetes 开源,是想借助开源社区的力量迅速将其发扬光大。正如 Kubernetes 联合创始人 Craig McLuckie 所言:
选择将 Kubernetes 开源是正确的,它为这个项目带来了很多好处,一是特性的反馈回路特别短,一旦系统运行不正常可以立即从社区获得反馈;二是众多优秀的工程师参与其中,这大大加速了项目发展。
自 Kubernetes 开源起便迅速迭代,一年后(2015 年 7 月),Kubernetes 发布了第一个商用版本(1.0),这标志着 Kubernetes 已经足够可靠,可以应用于商业系统中。此时,Kubernetes、Docker Swarm 和Apache Mesos已成三足鼎立之势。
1.3 第三阶段:一统天下
Kubernetes 项目的设计理念从一开始就避免和 Docker Swarm、Apache Mesos 同质化,由于设计理念超前且有众厂商推崇,Kubernetes 很快在容器编排领域占据上风。
Kubernetes 引入了 Pod 概念将容器分组,大量使用了 Sidecar 设计模式,诸如此类让业界大呼“超前”的设计理念很多都来自 Google 在容器基础设施领域多年来的实践沉淀。
2016 年Docker公司宣布将 Swarm 内置到 Docker 项目中,企图利用 Docker 项目在容器领域的领导地位推动 Swarm 的发展,然而 Kubernetes 在整个社区推进民主化架构: 为开发者暴露丰富的可扩展的插件机制,鼓励用户通过代码方式介入到 Kubernetes 项目的每个阶段。
Kubernetes 通过推进民主化架构,很快在容器社区中催生了大量的基于 Kubernetes API 和可扩展接口的二次创新工作。比如Istio、Operator、Rook 等。这进一步繁荣了容器社区,不过这次的繁荣完全是以 Kubernetes 为核心。
2017 年 9 月,Mesosphere 宣布支持 Kubernetes,这也是迫于用户压力,在对抗和妥协面前,不得不选择后者。
2017 年 10 月,在欧洲的 DockerCon 大会上,Docker 公司 CTO Solomon Hykes 宣布,Docker 的下个版本将支持 Kubernetes,台下观众响起热烈掌声,因为这是容器圈等待已久的消息。
DockerCon 大会历来是容器圈的技术风向标,但这场欧洲 DockerCon,Docker 不得不找来 Kubernetes 的两位联合创世人站台,因为 Kubernetes 才是事实上的主角。三人在台上合影,Solomon Hykes 居中,左边是现微软 Azure 团队杰出工程师 Brendan Burns,右边则是 Google 云端部门首席软件工程师 Tim Hockin。
正所谓三分天下,分久必合。自 Mesosphere 和 Docker 相继宣布支持 Kubernetes 后,持续两年多的容器编排之战走进尾声,Kubernetes 凭借各厂商全力支持以及 77%的市场份额获得全面胜利,成为容器编排领域的事实标准。
根据 Google 搜索引擎提供的数据,Kubernetes 的热度已远超同时期的其他容器平台:
2、Kubernetes 的成功要素
2.1 成功要素之一:设计理念超前、开放和可扩展
Kubernetes 项目源自 Google 内部 Borg 项目,Kubernetes 天生就吸收了 Borg 项目中多年的实践经验,其超前的设计理念是 Swarm、Mesos 无法与之相比的。
Kubernetes 的设计完美诠释了云原生应用理念,比如云原生应用理念要求将环境配置存在应用运行环境中。在 Kubernetes 集群中,所有环境配置都存在分布式存储 Etcd 中。此外,Kubernetes 还有一些操作对象专门用来存储环境配置,例如 ConfigMap,用来存储通用配置变量,Secret 专门用来存储密钥对象。
云原生应用理念要求尽量保证开发、测试和生产环境一致,但这几个不同的环境又应该彼此隔离。在 Kubernetes 集群中,不同的环境可以通过 namespace 进行隔离,保证彼此不互相干扰。
Kubernetes 致力于可扩展性,提供了大量接口,可让用户参与到容器管理的各个阶段,这种完全开放的理念持续吸引着大量的开发者和厂商参与其中。
2.2 成功要素之一:大厂的支持
Kubernetes 的成功离不开各一线大厂的支持,一线大厂与 Kubernetes 可以说是利益共同体,Kubernetes 的成功可以让企业快速推出产品变现,商业成功后反哺社区,进一步繁荣社区。
大厂基于 Kubernetes 的产品不断落地,加速 Kubernetes 商业化进程之余极大提振了市场信心。大厂一边使用 Kubernetes 技术提升产品竞争力,一边积极把客户需求带到社区进行落地,这进一步促进了社区繁荣。
Kubernetes 早期版本仅支持几百节点的单集群规模,与竞争对手 Mesos 支持的节点数量相去甚远,各大厂集合力量一起大幅提升了 Kubernetes 的集群管理规模,到 1.9 版本就已可以稳定支持 5000 个节点、15 万个 Pod 和 30 万个容器的规模,覆盖绝大部分用户场景,从此彻底消除业界对 Kubernetes 规模的顾虑。
虽然 Kubernetes 从诞生之初就采用松耦合架构,但主要是支持组件之间的解耦,在实际落地过程中仍不免有用户为实现定制需求而修改代码,比如 OpenShift 早期深度修改了 Kubernetes 的 APIServer,有的公司则对 scheduler、kubeproxy 等组件做了修改,一度对原生版本构成威胁——正如圈中曾经流行的一个说法:“github 上的 Kubernetes 代码只是 Kubernetes 的一个实现,任何人都可以基于 kubernetes API 提供自己的实现”。
经过社区的多番努力,Kubernetes 如今已实现了 Dynamic Admission Controller、CRD、API Aggregation、CRI、CSI、CNI、Device Plugin 等多个功能性插件框架,先前的许多下游特性也已被回合社区或以插件方式提供,维护了 Kubernetes 原生版本的正统地位。
截至 2019 年 5 月,Kubernetes 代码主仓已获得 5.3 万个星标,主仓贡献者达到了 2100 多个,Kubernetes 上层应用贡献者更是达到 31000 多名,其在 GitHub 上的活跃度已超过 99.99%的项目。
在众多贡献者中,来自大厂的贡献占了绝大多数。跟据 devstats.cncf.io 提供的数据,可以看出各个企业贡献排名。
华为很早就参与 Kubernetes 社区贡献,提供基于 Kubernetes 的云容器平台,如今华为的社区贡献仍呈快速上升趋势。
Kubernetes 的成功使 CNCF 走向空前繁荣,无论是 CNCF 会员数量、通过一致性认证的产品数量还是云厂商数量都呈快速上涨趋势。
CNCF 会员已由 23 个(2015 年)发展到 400 多个(2019 年),会员数量 3 年增长了 8 倍:
Kubernetes 的成功,催生了大量创新项目。截至 2019 年,CNCF 项目数量由 1 个(2015 年)增长到 38 个(2019 年):
为确保各厂商提供一致的 Kubernetes 产品,CNCF 在 2017 年启动了 Kubernetes 一致性认证计划。截至 2019 年,已有数百个基于 Kubernetes 的产品上市并通过 CNCF 一致性认证:
产品通过 Kubernetes 一致性认证的厂商
为规范 Kubernetes 服务商,确保服务商可以给客户提供专业的技术支持、咨询和培训,CNCF 社区启动了服务商认证计划,即通过审查服务商的资质、技术能力来颁发证书。截至 2019 年,已有 101 家公司通过该项认证。
2.3 成功要素之一:星火燎原的社区活动
Kubernetes 社区每年都会组织 2~3 场全球性的技术峰会 KubeCon,从历年会议情况来看,会议议题数和参数人数均成爆发式增长态势。除了 KubeCon 这种全球性的峰会外,还有很多自发的 Meetup 活动,比如 Cloud Native Days China、Cloud Native Days India 等。跟据 CNCF 官方统计数据,2017 年各类 Meetup 参会人数为 53925 人,而 2018 年参数人数增长了 60%达到 89112 人。
除了线下聚会,还有线上的活动来传播 Kubernetes 相关知识,比如"Cloud Native Lives"。Kubernetes 发展 5 年来,其活动轨迹已遍布全球,下图为 Meetup 网站可以直观查看的活动热度:
2.4 成功要素之一:真切的行业成功
有一线大厂背书,自然有企业愿意付诸实践。在 2019 年的 KubeCon 上海站演讲中,CNCF 执行董事 Dan Kohn 提到,已有超过 20 个知名的集群管理平台从自研架构迁移到 Kubernetes,包括阿里巴巴的 Sigma、亚马逊的 Apollo、Apache Mesos、百度的 Matrix、Cloud Foundry 的 Diego/Garden 等。
欧洲核子研究中心(CERN)正在使用 Kubernetes 管理着超过 200 个云计算中心,运行着 40 多万个工作负载,每秒处理着高达 30GB 的数据。
CERN 使用 Helm 进行部署,Prometheus 用于监控,CoreDNS 用于集群内的 DNS 解析,部署新集群的时间已从 3 小时减少到 15 分钟以内,而向集群中增加新节点则由过去的 1 个多小时减少到 2 分钟以内。
CERN 自 2018 年起就把采取混合云战略,多种云中的集群联合在一起工作,工作负载可以灵活地在这些集群中切换。
类似的还有 GitHub、中国移动、美团、知乎、华为商城等企业纷纷借助 Kubernetes 运行关键业务。这些走在前面的用户愿意尝试 Kubernetes 并从中获益,自然会带动越来越多的中小企业使用 Kubernetes。
3、Kubernetes 在中国
在 2019 年 6 月 KubeCon 大会上,Linux 基金会执行董事 Jim Zemlin 提出,Kubernetes 社区贡献中国位居全球第二,仅次于美国。
过去 3 年,各国的社区 committer 数量排名
(数据来源:https://k8s.devstats.cncf.io/d/50/countries-stats?orgId=1)
同时,Jim 还指出,从 2015 年 11 月(CNCF 创办时间)到 2019 年 6 月,CNCF 中国会员数量从 1 家增长到 46 家,增长速度位居全球首位。
中国正在深度参与 Kubernetes 社区,越来越多的中国企业提供基于 Kubernetes 的产品和服务,26%的 Kubernetes 认证供应商、19%的 Kubernetes 认证服务提供商和 32%的 Kubernetes 培训合作伙伴位于中国。
跟据 CNCF 社区在 2018 年做的调查,49%的受访者在生产环境中使用 Kubernetes,另有 49%的受访者还在对 Kubernetes 进行评估。
其中一些有名的例子:
锦江国际,全球排名前五的在线旅行社(online travel agency)和酒店之一,其服务范围包括酒店预定、旅游套餐和汽车租赁。他们使用 Kubernetes 容器将软件发布时间从几小时降至几分钟,大大提升了发布速度,并利用 Kubernetes 来提高在线工作负载的可伸缩性和可用性。
中国移动使用容器取代虚拟机,以轻量级的方式在其平台上运行各种应用程序,利用 Kubernetes 提高资源利用率。
中国的国有电力供应公司国家电网使用容器和 Kubernetes 来实现快速故障恢复。
由上可见,中国企业正在积极地实践着云原生理念,云原生理念已经深入到各行各业,包括金融服务行业、消费行业、政府、制造业等。中国正以惊人的速度拥抱云原生理念以及相关开源技术。
4、展望未来
4.1 持续加速多云混合云商业落地
Kubernetes 可以方便的整合不同的计算资源,Kubernetes 不需要知道计算资源位置在哪,也不需要知道如何分布,Kubernetes 都可以将工作负载分配到各计算资源。
对运营商、金融用户来讲,混合云可以帮助这些用户除了使用内部资源外还可以使用云的无限计算功能。
4.2 Kubernetes 助力端边云全面协同
随着 5G 技术的商用,将会极大催生物联网产业发展,而 Kubernetes 将会在物联网边缘计算生态系统中发挥重要作用。
基于 Kubernetes 的KubeEdge项目提供完整的边缘计算解决方案,使用该方案可以节省大量设置和运营成本。依托 KubeEdge 原生开源边缘计算平台,边缘计算将云端计算能力延伸到靠近终端设备的边缘节点,可以实现从云到端“最后一公里”的边缘计算资源远程管控、数据处理、分析决策、智能化等。
4.3 云原生覆盖全行业
目前,Kubernetes 已经充分涉足互联网、AI、区块链、金融等行业,可以预想的是将来会有越来越多的行业开始使用 Kubernetes,并且各行业实践会更深入。
七年容器云架构师张勇在我们 InfoQ 大会上分享了一个主题为《基于 k8s 开发高可靠数据库服务的实践》的技术演讲,有兴趣的朋友可以戳我联系管理员获取观看权限。
评论 2 条评论