本文发布时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已变得不正确。

聚焦 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 关注 Kubernetes 中每个组件的特定功能:例如,SIG 安全考虑 Kubernetes 中每个组件的安全方面,或者 SIG 仪表关注 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 中,这可能意味着主动帮助修复您个人受影响的错误,或者帮助按优先级分类您关心的错误。

要快速了解任何开源代码库,您可以采取两种策略:从深入探索特定问题开始,并在需要时扩展您的知识边界,或者尽可能简要地查看尽可能多的问题和更改请求,以获得组件如何工作的高级视图。最终,如果您想成为节点审查员或批准者,您将需要同时执行这两项操作。

Davanum Srinivas 和我各自运行了一组小组指导,以帮助教授新贡献者成为节点审查员的技能,如果有人感兴趣,我们可以努力寻找一位导师来运行另一个会议。我还鼓励新的贡献者参加我们的节点 CI 子项目会议:这是一个较小的听众,我们不记录分类会话,因此这可能是一种不那么令人生畏的 SIG 入门方式。

您想招募哪些特定的技能?SIG 可用性的贡献者可能会学习到哪些技能?

SK:SIG Node 在许多不同领域的许多工作流上工作。所有这些领域都在系统级别。对于典型的代码贡献,您需要对构建和利用低级 API 以及编写高性能和可靠的组件充满热情。作为一名贡献者,您将学习如何调试和排除故障、分析和监控这些组件,以及这些组件运行的用户工作负载。通常情况下,由于它们运行生产工作负载,因此无法或几乎无法访问节点。

另一种贡献方式是帮助记录 SIG 节点功能。这种类型的贡献需要对功能有深入的了解,并能够用简单的术语解释它们。

最后,我们一直在寻求有关如何最好地运行您的工作负载的反馈。来解释它的具体细节,以及 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 的会议,了解最新的研究结果、未来一年的计划,以及如何以贡献者的身份参与上游节点团队!