这篇文章已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否仍准确。

一次一个 KEP 来增强 Kubernetes

你知道 Kubernetes v1.24 有 46 项增强功能吗?这在短短 4 个月的发布周期内包含了大量新功能。Kubernetes 发布团队协调着发布的各项事宜,从修复测试问题到发布更新的文档。工作量很大,但他们总能交付成果。

发布团队由大约 30 人组成,分布在六个子团队中——Bug 分类、CI 信号、增强功能、发布说明、沟通和文档。每个子团队负责发布的一个方面。本文将重点介绍增强功能子团队的作用以及如何参与其中。

什么是增强功能子团队?

好问题。我们稍后会谈到,但首先,让我们聊聊 Kubernetes 中功能的管理方式。

每个新功能都需要一份 Kubernetes 增强提案——简称 KEP。KEP 是结构化的小型设计文档,提供了一种提案和协调新功能的方式。KEP 作者描述动机、设计(及替代方案)、风险和测试——然后社区成员提供反馈以建立共识。

KEP 通过 k/enhancements 代码库上的 pull request (PR) 工作流程提交和更新。功能从 Alpha 阶段开始,随着成熟度提高,通过毕业流程进入 Beta 和 Stable 阶段。例如,这是一个关于 在 Windows Server 上支持特权容器 的很棒的 KEP。它在 Kubernetes v1.22 中作为 Alpha 引入,并在 v1.23 中毕业到 Beta。

回到刚才的问题——增强功能子团队协调着每个发布版本中 KEP 的生命周期跟踪。每个 KEP 都需要满足一组要求,才能被批准纳入发布版本。增强功能子团队验证每个 KEP 的各项要求并跟踪其状态。

在发布开始时,Kubernetes 特别兴趣小组 (SIGs) 提交他们的增强功能以选择加入发布版本。一个典型的发布版本开始时可能有 60 到 90 个增强功能。在发布过程中,许多增强功能会退出。有些未能完全满足 KEP 要求,有些则未能在代码中完成实现。大约 60%-70% 的选择加入的 KEP 会进入最终的发布版本。

增强功能子团队做什么?

又一个好问题,请继续提问!增强功能团队参与每个发布版本中的两个关键里程碑:增强功能冻结和代码冻结。

增强功能冻结

增强功能冻结是 KEP 完成的截止日期,以便该增强功能可以包含在发布版本中。它是一个质量门控,用于强制围绕 KEP 的维护和更新保持一致性。最显著的要求是 (1) 生产准备度审查 (PRR) 和 (2) 包含完整测试计划和毕业标准的 KEP 文件

增强功能子团队通过 Github 上 KEP issue 的评论与每位 KEP 作者沟通。第一步,他们会验证状态并检查是否满足要求。满足要求的 KEP 会被标记为已跟踪;否则,则被视为存在风险。如果在增强功能冻结生效时某个 KEP 仍存在风险,则该 KEP 会从发布版本中移除。

周期中的这一部分通常是增强功能子团队最忙碌的时候,因为需要梳理大量的 KEP,而且每个 KEP 可能需要多次检查以验证是否满足要求。

代码冻结

代码冻结是所有增强功能的实现截止日期。如果增强功能需要代码更改或更新,则必须在此时间点之前完成代码实现、审查和合并。发布版本的后三分之一主要集中在稳定代码库——修复不稳定测试、解决各种回归问题和准备文档——所有代码都需要到位后才能进行这些步骤。

增强功能子团队验证某个增强功能的所有 PR 是否已合并到 Kubernetes 代码库 (k/k) 中。在此期间,子团队会联系 KEP 作者,了解哪些 PR 属于该 KEP,验证这些 PR 是否已合并,然后更新 KEP 的状态。如果在代码冻结截止日期前未能完全合并代码,则该增强功能会从发布版本中移除。

我如何参与发布团队?

很高兴你问了这个问题。最直接的方式是申请成为 发布团队影子成员。影子成员角色是一种实践学徒制,旨在培养个人成为发布团队的领导职位。许多影子成员角色是非技术性的,不需要对 Kubernetes 代码库有先前的贡献。

Kubernetes 每年发布 3 个版本,每个版本约有 25 名影子成员,因此发布团队总是需要愿意贡献的个人。在每个发布周期之前,发布团队都会开放影子成员计划的申请。申请开放时,会在 Kubernetes Dev 邮件列表 中发布公告。你可以订阅该列表的通知(或定期查看!)以了解何时开放申请。公告通常会在 4 月中旬、7 月中旬和 12 月中旬发布——大约在每个发布开始前一个月。

我如何了解更多?

如果你对所有 Kubernetes 发布子团队的具体情况感到好奇,可以查看角色手册。手册详细记录了每个子团队的工作流程,包括每周的活动明细。它是更好地了解每个团队的绝佳参考资料。

你还可以查看与发布相关的 Kubernetes Slack 频道——特别是 #release、#sig-release 和 #sig-arch。这些频道有围绕发布的许多方面的讨论和更新。