本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
聚焦 SIG Node
引言
在 Kubernetes 中,节点代表集群中的一台机器。SIG Node 负责这个非常重要的节点组件,并支持各种子项目,如 Kubelet、容器运行时接口 (CRI) 等,以支持 Pod 和主机资源之间的交互。在这篇博客中,我们总结了与 Elana Hashman (EH) 和 Sergey Kanzhelev (SK) 的对话,他们将带领我们了解 SIG 的各个方面,并分享一些关于其他人如何参与的见解。
对话摘要
您能简单介绍一下 SIG Node 的职责吗?
SK:SIG Node 是一个垂直 SIG,负责支持 Pod 和主机资源之间受控交互的组件。我们管理调度到节点的 Pod 的生命周期。该 SIG 的重点是启用各种类型的工作负载,包括对硬件有特定要求或对性能敏感的工作负载。同时,我们还要在节点上的 Pod 之间以及 Pod 与主机之间保持隔离边界。该 SIG 维护了相当多的组件,并且有许多外部依赖(如容器运行时或操作系统功能),这使得我们处理的复杂性非常大。我们驯服了这种复杂性,旨在持续提高节点的可靠性。
“SIG Node 是一个垂直 SIG”,您能再解释一下吗?
EH:SIG 分为两种:水平 SIG 和垂直 SIG。水平 SIG 关注 Kubernetes 中每个组件的特定功能:例如,SIG Security 考虑 Kubernetes 中每个组件的安全方面,或者 SIG Instrumentation 关注 Kubernetes 中每个组件的日志、指标、跟踪和事件。这类 SIG 通常不拥有很多代码。
另一方面,垂直 SIG 拥有单个组件,并负责批准和合并该代码库的补丁。SIG Node 拥有“节点”垂直方向,涉及 kubelet 及其生命周期。这包括 kubelet 本身的代码,以及节点控制器、容器运行时接口和相关子项目,如节点问题检测器。
CI 子项目是如何开始的?它是否专属于 SIG Node,以及它如何帮助 SIG?
SK:这个子项目是在一个版本被众多关键测试失败阻塞之后作为后续工作开始的。这些测试并非一下子全部失败,而是持续缺乏关注导致测试质量缓慢下降。SIG Node 始终将质量和可靠性放在首位,而成立这个子项目就是为了突出这一优先级。
作为在问题和 PR 数量方面排名第三的 SIG,您的 SIG 如何处理如此多的工作?
EH:有条理地工作很有帮助。当我在 2021 年 1 月增加对 SIG 的贡献时,我发现自己被大量的拉取请求和问题所淹没,不确定从何开始。我们已经在 CI 子项目面板上跟踪与测试相关的问题和拉取请求,但这遗漏了我们很多错误修复和功能开发工作。因此,我开始为我们其余的拉取请求建立一个分类面板,这让我能够按状态和要采取的操作对每个拉取请求进行排序,并为其他贡献者记录其使用方法。在过去的两个版本中,我们通过两个面板关闭或合并了 500 多个问题和拉取请求。Kubernetes devstats 显示,我们因此显著提高了我们的工作速度。
六月,我们举办了第一次错误清理活动,以处理积压的针对 SIG Node 的问题,确保它们得到正确分类。在这个 48 小时的全球活动中,我们关闭了 130 多个问题,但截至撰写本文时,我们仍有 333 个未解决的问题。
为什么新老贡献者应该考虑加入 SIG Node?
SK:成为 SIG Node 贡献者会为您带来有益且有用的技能和认可。了解 kubelet 的内部机制有助于构建更好的应用程序,调整和优化这些应用程序,并在问题排查中占据优势。如果您是新贡献者,SIG Node 将为您提供理解其他 Kubernetes 组件设计方式的关键基础知识。现有贡献者可能会受益,因为许多功能迟早需要 SIG Node 的更改。因此,成为 SIG Node 贡献者有助于更快地构建其他 SIG 中的功能。
SIG Node 维护着众多组件,其中许多组件都依赖于外部项目或操作系统功能。这使得入门过程相当漫长且要求很高。但如果您愿意接受挑战,总有适合您的位置,并且有一群人会提供支持。
您如何帮助新贡献者入门?
EH:在 SIG Node 中入门可能会令人望而生畏,因为有很多工作要做,我们的 SIG 会议规模很大,而且很难找到一个切入点。
我总是鼓励新贡献者从事他们已经有所投入的事情。在 SIG Node 中,这可能意味着自愿帮助修复您个人受影响的错误,或者帮助按优先级分类您关心的错误。
要快速掌握任何开源代码库,您可以采取两种策略:首先深入研究一个特定问题,并根据需要扩展您的知识范围,或者尽可能多地简要审查问题和更改请求,以获得组件工作方式的更高级别图景。最终,如果您想成为 Node 评审员或批准者,您需要同时进行这两种操作。
Davanum Srinivas 和我各自举办了一期小组指导,帮助新贡献者学习成为 Node 评审员的技能,如果大家有兴趣,我们可以努力寻找导师再举办一期。我还鼓励新贡献者参加我们的 Node CI 子项目会议:听众较少,我们不录制分类会议,因此这可能是一种不那么令人生畏的 SIG 入门方式。
你们希望招募哪些特定技能的人才?SIG 可用性的贡献者可能会学到哪些技能?
SK:SIG Node 在许多非常不同的领域开展工作。所有这些领域都处于系统层面。对于典型的代码贡献,您需要对构建和利用低级 API 以及编写高性能和可靠的组件充满热情。作为贡献者,您将学习如何调试、排查、分析和监控这些组件,以及这些组件运行的用户工作负载。通常,在有限或没有访问节点权限的情况下,因为它们正在运行生产工作负载。
另一种贡献方式是帮助记录 SIG Node 功能。这类贡献需要对功能有深入的理解,并能够用简单的语言解释它们。
最后,我们一直在寻求关于如何最好地运行您的工作负载的反馈。欢迎前来解释其具体细节,以及 SIG Node 组件中的哪些功能可以帮助更好地运行它。
您收到哪些积极反馈?SIG Node 接下来的计划是什么?
EH:在过去的一年里,SIG Node 采纳了一些新的流程来帮助管理我们的功能开发和 Kubernetes 增强提案,其他 SIG 也向我们寻求管理大型工作负载的灵感。我希望我们能继续在这个领域发挥领导作用并进一步迭代。
我们目前在途中有很好的新功能和废弃功能的平衡。废弃未使用的或难以维护的功能有助于我们控制技术债务和维护负担,例如 dockershim 和 DynamicKubeletConfiguration 的废弃。新功能将为最终用户集群解锁额外的功能,包括支持 cgroups v2、交换内存、优雅节点关机和设备管理策略等令人兴奋的功能。
您还有什么要分享的结束语/资源吗?
SK/EH:加入任何开源社区都需要时间和精力。SIG Node 最初可能会因为参与者众多、工作量大和项目范围广而让您不知所措。但这绝对值得。加入我们热情的社区吧!SIG Node GitHub 仓库包含许多有用的资源,包括 Slack、邮件列表和其他联系信息。
总结
SIG Node 在 KubeCon + CloudNativeCon Europe 2021 演讲中介绍了他们出色的 SIG,并进行了深入探讨。加入 SIG 的会议,了解最新的研究成果、未来一年的计划以及如何作为贡献者参与上游 Node 团队!