Kubernetes 十岁了:从容器化到云原生的辉煌十年
十年前,即 2014 年 6 月 6 日, Kubernetes 的第一次提交 被推送到 GitHub。第一次提交包含 250 个文件和 47,501 行 go、bash 和 markdown,开启了我们今天的项目。谁能预料到 10 年后,Kubernetes 会发展成为迄今为止最大的开源项目之一,拥有 来自 44 各国家/地区的 8,000多家公司的88,000 多名贡献者。

Kubernetes 的起源 – 技术的融合
Kubernetes 背后的理念早在第一次提交甚至第一个原型(2013 年问世)之前就已开始。21 世纪初,摩尔定律发挥了巨大作用。计算硬件正以惊人的速度变得越来越强劲。相应地,应用程序也变得越来越复杂。硬件商品化和应用程序复杂性的结合表明需要进一步将软件从硬件中抽象出来,解决方案也开始出现。
与当时的许多公司一样,谷歌正在迅速扩张,其工程师对在 Linux 内核中创建一种隔离形式的想法很感兴趣。谷歌工程师 Rohit Seth 在2006 年的一封电子邮件中描述了这一概念:
我们使用术语“容器”来表明一种结构,通过该结构我们可以跟踪和计费工作负载的系统资源(如内存、任务等)的利用情况。
自 1.0 以来的历史更新
- • 2016 年 12 月 – Kubernetes 1.5引入了运行时可插入性,包括初始 CRI 支持和 alpha Windows 节点支持。OpenAPI 也首次出现,为客户端发现扩展 API 铺平了道路。 此版本还在 Beta 版中引入了 StatefulSets 和 PodDisruptionBudgets。
- • 2017 年 4 月——引入基于角色的访问控制或 RBAC。
- • 2017 年 6 月 – 在Kubernetes 1.7中,ThirdPartyResources 或“TPR”被 CustomResourceDefinitions (CRD) 取代。
- • 2017 年 12 月 — Kubernetes 1.9见证了 Workloads API 的 GA(普遍可用)。发布博客指出:“Deployment 和 ReplicaSet 是 Kubernetes 中最常用的两个对象,经过一年多的实际使用和反馈,目前已经稳定下来。”
- • 2018 年 12 月——在 1.13 版本中,容器存储接口 (CSI) 达到 GA,用于引导最小可行集群的 kubeadm 工具达到 GA,CoreDNS 成为默认 DNS 服务器。
- • 2019 年 9 月——自定义资源定义在 Kubernetes 1.16 中正式发布。
- • 2020 年 8 月——Kubernetes 1.19将发布支持窗口延长至 1 年。
- • 2020 年 12 月——Dockershim在 1.20 版本中被弃用
- • 2021 年 4 月——Kubernetes发布节奏从每年 4 个版本更改为每年 3 个版本。
- • 2021 年 7 月——Kubernetes 1.22 中删除了广泛使用的 beta API 。
- • 2022 年 5 月——Kubernetes 1.24 的beta API 默认被禁用,以减少升级冲突和删除Dockershim,导致用户普遍感到困惑(从那时起,我们改善了沟通!)
- • 2022 年 12 月——在 1.26 版本中,对批处理和作业 API 进行了重大改善,为更好地支持 AI/ML/批处理工作负载铺平了道路。
Kubernetes 现状
自成立以来,该项目的技术能力、使用量和贡献度都取得了长足的发展。该项目仍在积极努力改善并更好地服务其用户。
- • 在即将发布的 1.31 版本中,该项目将庆祝一项重大的长期项目的完成:删除树内云提供商代码。
在这次 Kubernetes 历史上最大规模的迁移中,大约删除了 150 万行代码,将核心组件的二进制大小减少了约 40%。
在项目早期,很明显可扩展性是成功的关键。
不过,如何实现这种可扩展性并不总是很清楚。这次迁移从核心 Kubernetes 代码库中删除了各种特定于供应商的功能。
目前,其他可插入的可扩展性特性或模式可以更好地服务于特定于供应商的功能,例如 自定义资源定义 (CRD)或Gateway API 等 API 标准。
Kubernetes 在服务其庞大的用户群方面也面临着新的挑战,社区也在相应地进行调整。
其中一个例子是将镜像托管迁移到新的、社区拥有的 registry.k8s.io。为用户提供预编译二进制镜像的出口带宽和成本已经变得超级巨大。
这一新的注册表更改使社区能够以更具成本效益和性能的方式继续提供这些便捷的镜像。
Kubernetes 的未来
十年过去了,Kubernetes 的未来依旧一片光明。社区正在优先思考改善用户体验和增强项目可持续性的变革。应用程序开发的世界在不断发展,Kubernetes 也准备随之改变。
2024 年,人工智能的出现将一种曾经小众的工作负载类型变成了一种超级重大的工作负载类型。分布式计算和工作负载调度始终与人工智能、机器学习和高性能计算工作负载的资源密集型需求密切相关。贡献者密切关注新开发的工作负载的需求以及 Kubernetes 如何最好地满足这些需求。新成立的 服务工作组就是社区如何组织起来满足这些工作负载需求的一个例子。未来几年,Kubernetes 管理各种硬件的能力以及管理以块形式跨硬件运行的大型批处理式工作负载调度的能力可能会得到改善。
Kubernetes 周围的生态系统将继续发展壮大。未来,维护项目可持续性的举措(如树内供应商代码的迁移和注册表更改)将变得越来越重大。
Kubernetes 的未来 10 年将由其用户和生态系统引领,但最重大的是,由为其做出贡献的人引领。社区依旧对新贡献者开放。您可以在我们的新贡献者指南 https://k8s.dev/contributors中找到有关贡献的更多信息。
我们期待与您一起构建 Kubernetes 的未来!
作者: Bob Killen(CNCF)、Chris Short(AWS)、Frederico Muñoz(SAS)、Kaslin Fields(Google)、Tim Bannister(The Scale Factory)以及全球每一位贡献者
译者: Devin
欢迎关注我的公众号“辣个男人Devin”,新鲜技术文章第一时间推送。







![[C++探索之旅] 第一部分第十一课:小练习,猜单词 - 鹿快](https://img.lukuai.com/blogimg/20251015/da217e2245754101b3d2ef80869e9de2.jpg)










暂无评论内容