
Kubernetes 架构路线图从 2017 领导力峰会看 Nucleus 分层、Add-on 治理与 SIG Architecture 的诞生【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/community本篇文章基于 1145_1245_ARCHITECTURAL_ROADMAP.md 这份 2017 年 Kubernetes 领导力峰会Leadership Summit的现场会议纪要还原当年由 Brian Grant 主持的架构路线图专题讨论为什么用 Nucleus原子核取代被过度使用的 Core 一词、Add-on 如何定义与管理、Kubernetes 应该分成几层、monolithic 的 V1 API group 如何拆分以及这些讨论如何直接催生了 SIG Architecture 的成立。读者读完本文可以完整掌握当年架构分层决策的来龙去脉并能对照当前仓库中 sig-architecture 的实际落地成果理解 Kubernetes 架构治理从讨论到制度化的全过程。一、会议背景与文档定位2017 年 6 月 2 日Kubernetes 在加州 San Jose 举办了 2017 领导力峰会详见 announcement.md。这是一场仅限受邀者参加的闭门会议与会者是 SIG leads、release managers 以及来自 Google、Red Hat、CoreOS、WeaveWorks、Deis、Mirantis 等公司的社区领袖旨在面对面地讨论社区未来的开发与治理方向。本场 Architectural Roadmap 是当天的分会场之一会议纪要的元信息如下项目内容会议主题Session TopicArchitectural Roadmap架构路线图主持人FacilitatorBrian Grant记录人Note-takerJason Singer DuMars、Nilay Yener负责转 Markdown 并上传 GitHub 的人nyener按照 session-notes/readme.md 中约定的命名规范HHMM-HHMM_SESSIONTITLE.md本场纪要保存为1145_1245_ARCHITECTURAL_ROADMAP.md即当天 11:45–12:45 的讨论记录。整场讨论以提问—回答—评论的形式展开虽然没有最终定稿的完整架构文档但明确了两个最重要的产出架构分层思路的初步共识以及创建 SIG Architecture 的行动项2017 年 6 月 3 日经一致投票批准。二、核心概念一Nucleus 取代 Core讨论一开始就定下了一个重要的术语决策不使用 core因为它已经被过度使用overloaded——改用 nucleus原子核来指代Kubernetes 运行所绝对必需的东西absolute necessities for Kubernetes to function。这个改名的动机是务实而非修辞在当时的社区话语里core 同时被用于描述核心组件、核心 API、核心功能等多个含义语义模糊导致讨论经常各说各话。引入 Nucleus 后它被精确定义为Kubernetes 得以运转的绝对必需部分与外围的扩展性组件add-on形成清晰边界。随后 Eric Tune 用一句通俗的概括帮助大家对齐三层心智模型并得到了 Brian Grant 的确认Nucleus原子核层抽象我的云abstract my cloudApplication应用层运行我的工作负载run my workloadGovernance治理层企业需要的各种管控能力enterprise I need to do stuff。这一三层模型的提出为后续的发布流程、代码组织和 SIG 分工提供了讨论框架。三、核心概念二Add-on 的定义与治理Add-on插件是本次讨论的重头戏。围绕它的定义、调度方式、生命周期与 Kubernetes 核心的关系现场形成了如下共识3.1 什么是 Add-onAaron C 提问后现场给出的定义是Add-on 是任何由集群为维持其自身内部一致性/功能而管理的 Kubernetes 资源——例如可扩展的集群功能、上下文拉取extensible cluster functionality / pulling context。紧接着的两个确认性问答进一步收窄了边界CNI 也是 add-on 吗—— 是Are CNI also add-ons? A: Yes.。如何区分 add-on 与 required add-on必需插件—— 判断标准是是否符合一致性conformance只要它由集群管理器cluster manager作为集群的一部分进行管理它就是 add-on可以类比内核中的驱动程序like a driver in the kernel。这一界定把 add-on 从用户安装的应用中剥离出来划归为集群自身运维的一部分与同一年贡献者峰会上 scaling-up-and-scaling-down-and-addon-management.md 中 Thockin 的表述Addons are things we manage vs things you manage即我们管理员管理的 vs 你用户管理的高度一致可见这一观点在当年的两个峰会上是连贯演进的。3.2 Add-on 与 Helm Chart 的生命周期关系有人问Helm Charts 是否应该与集群的生命周期绑定回答指出Justin Santa Barbara 提过 addons v2 的 issue但 add-on 的生命周期与 Helm 的使用场景不同——add-on 可以使用 chart但引导bootstrapping阶段更倾向于直接访问源码would prefer sources accessed directly for bootstrapping。也就是说Helm 更适合作为用户侧的应用打包分发工具而集群自身引导所需的 add-on 需要更直接、更可控的来源。3.3 Add-on 如何被调度不止 DaemonSet针对add-on 是否只能用 DaemonSet 调度的疑问现场揭示了当时真实的实现机制通过bash 脚本和**一次性调度器one-shot scheduler**实现在 Google 内部这叫 babysitter其历史早于 Borg它启发了 kubelet 的 run once 模式addon manager 负责管理 replicaset 对象。这段记录非常关键它解释了 Kubernetes 早期 add-on 管理并非依赖单一调度原语而是组合了脚本、一次性调度与对象管理器的混合方案。这种自举self-hosting的思路也直接引出了后续关于 bootstrapping 的讨论。3.4 分层不是严格层级有人担心层的概念会引入层级与优先级例如 governance 并不隐式依赖 application 层。Brian Grant 的回答是尽量避免搞出 9 层发布流程需要灵活性越模块化越好more modular the better。同时有人强调让一切都尽量简单keep this as simple as possible。社区不希望用户和集群运维者的使用体验受到显著冲击。四、API 演进拆分 monolithic 的 V1 API group讨论中明确提到了一个当时已在酝酿中的重大架构变更需要拆开 monolithic 的 V1 API group——pods 留在 V1 group其他资源进入各自的 API group以便让它们能够更容易地独立演进want to evolve them more easily。在当时的 Kubernetes 中几乎所有资源都拥挤在单一的v1API group 下任何 API 变更都会牵一发动全身。将 Pod 等最核心的资源保留在 V1同时把其他资源拆分为独立 API group是让 API 可以按各自节奏演化的关键一步。作为配套信号讨论还提到admission controller 的优先级在 1.7 中提高了并且希望让 API aggregation 变得重要want to make API aggregation important。API 聚合aggregated API server正是后来 Kubernetes 扩展 API 的核心机制之一。五、Bootstrapping 与自托管Self-hosting挑战讨论指出add-on 处于最底层但我们可能还需要更上层的 add-on。这引出了自托管问题的经典难点Bootstrapping 需要特别关注这与其他 self-hosting 问题类似——有些人可能不会运行 aggregated API server。换句话说如果引导过程依赖聚合 API server 或高层 add-on那么在不运行这些组件的最小化集群上引导流程就会失效。因此底层 add-on 的引导必须保持独立、直接、可自举。六、三大影响代码组织、SIG 对齐与路线图投资有人总结这次架构讨论会带来三个层面的影响并得到了回应代码组织Code Organizationnucleus 与其他部分的代码应该放在一个仓库还是不同仓库边界在哪回答是代码组织是另一个话题但我们渴望更多模块化希望 SIG 拥有各自独立的代码库SIGs with their own codebases。这与同场峰会 0300-0345_CODEORGANIZATION.md 中从 monorepo / mono-org 走向按 SIG 与子项目划分仓库的方向完全一致。SIG 对齐SIG Alignment架构分层如何映射到 SIG 的职责划分。路线图投资Roadmap / Where to Invest例如提高 admission controller 在 1.7 的优先级、推动 API aggregation 成为重点。此外两个补充评论值得注意只有扩展点extension points才允许带来更多技术债——这是唯一被认可的增加技术债务的理由该原则可能同样适用于云提供商cloud providers部分。云提供商的扩展工作当时只有一个人在做这并非好事not a good thing——暴露了关键路径上的单点风险呼吁社区投入更多人力。同时社区也强调需要有能力对已被这份清单淘汰的事物说不be able to say no to things that are obsoleted by the list避免历史包袱拖慢演进。七、结论与行动项SIG Architecture 的诞生7.1 关键结论需要就架构文档与示意图docs and diagrams获取社区的反馈当这些架构工作推进时期望得到所有 SIG 的支持并把相关工作纳入各 SIG 的 backlog。7.2 行动项Action Items行动项负责人Owner创建 SIG Architecture2017 年 6 月 3 日经一致投票批准Jaice Singer DuMars、Brian GrantLead细化并批准 Brian 的架构方案SIG Architecture这是本场会议最直接的制度性成果架构路线图不再停留在讨论层面而是正式成立了 SIG Architecture来承接后续工作。八、历史决议的今日落地仓库中的佐证十余年后回看这场会议讨论的议题绝大多数都在当前仓库中找到了制度化落地的痕迹8.1 SIG Architecture 的现状sig-architecture/README.md 开宗明义The Architecture SIG maintains and evolves the design principles of Kubernetes, and provides a consistent body of expertise necessary to ensure architectural consistency over time.维护并演进 Kubernetes 的设计原则提供确保架构长期一致性的专业能力——这正是行动项创建 SIG Architecture的直接产物。sig-architecture/charter.md 中列出的 in-scope 范围几乎逐条对应了当年讨论的核心议题Conformance test definitions一致性测试定义——对应add-on 与 required add-on 通过 conformance 区分API definitions / API conventions / Deprecation policyAPI 定义、API 约定、弃用策略——对应拆分 V1 API group、让 API 独立演进Architectural renderings架构图——对应需要就 docs 和 diagrams 收集反馈Kubernetes Enhancement Proposal (KEP) process——对应后来强制化的特性提案流程自 Kubernetes 1.14 起所有增强特性必须走 KEP见 sig-architecture/README.mdUpgrade and downgrade policy / Cross-component version support skew升级降级策略与跨组件版本倾斜支持——对应各层是否独立发布、生命周期如何管理的讨论。8.2 治理结构的落地sigs.yaml 中记录了 SIG Architecture 的完整 GitHub team 划分包括sig-architecture-api-reviews、sig-architecture-pr-reviews、sig-architecture-proposals、sig-architecture-test-failures等见 sigs.yaml说明当年的API review、提案、测试等职责已经固化为明确的治理分工。当年的代码组织讨论在 0300-0345_CODEORGANIZATION.md 中有完整记录其中同样指向了按 SIG/子项目拆分仓库、staging 目录过渡、独立发布等策略今天 sig-architecture/README.md 中的 code-organization 子项目owned 覆盖 staging、component-base、utils 等正是这一路线的延续。8.3 Add-on 治理的后续演进当年add-on 是什么、谁来管理的讨论在同年底贡献者峰会 scaling-up-and-scaling-down-and-addon-management.md 中继续深化出现了三类 add-onIstio/Service Catalog 类、Network policy 类、kube-proxy/kube-dns 类、add-on 应是最小一致性通过集、以及apt or yum for kubernetes等著名论断。而当年峰会上的跨场呼应见 1600-1740_PRESENTATIONS_FROM_BREAKOUTS_AND_CALL_TO_ACTIONS.md也提到Code Organization Improving the Release Process是当天的重要议题之一SIG 涉及 API Machinery、CLI 与 Cluster Lifecycle。从源码结构与治理文档看当年的讨论已经演化为今天 Kubernetes 模块化仓库、独立 API group 与一致性认证体系的制度基础。九、如何继续深入研究如果你想沿着这份纪要继续挖掘建议按以下路径阅读仓库本场会议上下文events/2017/05-leadership-summit/announcement.md峰会目标与形式、events/2017/05-leadership-summit/session-notes/readme.md纪要命名规范同日相关分会场0940-1000_PROJECT_GOALS_ROADMAP.md项目目标与路线图、0300-0345_CODEORGANIZATION.md代码组织与发布流程Add-on 主题延续events/2017/12-contributor-summit/scaling-up-and-scaling-down-and-addon-management.md治理制度化sig-architecture/README.md、sig-architecture/charter.md、sigs.yaml。需要说明的是这份文档是现场速记包含 QA 与行动项并非正式的架构规范其具体技术细节如babysitter调度机制、addon manager 实现代表 2017 年时的状态阅读时应结合当时的 Kubernetes 版本语境理解但其中关于分层要少而灵活、Add-on 由集群管理、API 要拆分独立演进、架构治理需要专门 SIG 承接的核心判断经仓库治理文档印证已成为 Kubernetes 长期演进的底层共识。【免费下载链接】communityKubernetes Community Documentation项目地址: https://gitcode.com/GitHub_Trending/com/community创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考