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

加入 SIG Scalability,以艰难的方式学习 Kubernetes

为SIG Scalability做贡献是深入全面学习Kubernetes的好方法,团队非常欢迎您加入成为贡献者。我研究了“艰难之路”学习的价值,并采访了当前的SIG主席,希望能让您了解贡献的感受。

“艰难之路”学习的价值

软件开发社区中有一种信念,即学习新语言或系统应采用最严苛、最具挑战性的方法。这些方法通常以“通过__的艰难之路学习”为名。例如:“通过艰难之路学习代码”、“通过艰难之路学习Python”,以及许多源自Zed Shaw在此主题上的课程。

虽然市面上有人提供“通过艰难之路学习Kubernetes”的体验(最著名的是Kelsey Hightower),但任何“艰难之路”项目都应试图涵盖核心主题原则的各个方面。

因此,“通过艰难之路学习Kubernetes”的真正方法是加入CNCF并参与项目本身。只有一个SIG能够真正提供Kubernetes的全栈学习体验:SIG Scalability。

SIG Scalability背后的团队负责检测和处理Kubernetes集群在节点数量达到上千个时出现的问题。Wojiciech Tyczynski,一位Google的资深软件工程师,也是SIG Scalability的成员,表示该SIG的测试集群标准规模超过5000个节点。

然而,这个SIG并非由拥有高度可扩展系统设计博士学位的专家组成。例如,许多与Tyczynski合作的人在加入SIG时对这类问题知之甚少,甚至对Kubernetes也知之甚少。

在SIG Scalability上工作就像跳入深水区学习游泳一样,这个SIG天生就关注整个Kubernetes项目。SIG Scalability专注于Kubernetes作为一个整体在大规模下的功能。SIG Scalability团队成员有动力学习每一个系统,并理解所有系统如何相互作用。

复杂而有意义的贡献者体验

虽然这听起来很复杂(确实如此!),但这并不意味着它超出了普通开发人员、测试人员或管理员的能力范围。Google软件开发人员Matt Matejczyk自2019年初才加入团队,从那时起,他一直是团队中备受重视的成员,致力于发现bug。

“我是新来的,”Matejczyk说。“我于[2019年]1月加入团队。在此之前,我在Google纽约的AdWords工作。我为什么加入?我认识那里的一些人,所以这是我做出这个决定的原因之一。我当时认为Kubernetes是一种独特、尖端的技术。我认为能参与其中会很酷。”

Matejczyk对“酷”的判断是正确的。“很酷,”他说。“所以,实际上,提高可扩展性并不容易。你需要理解很多东西。你需要非常了解Kubernetes。它可以使用Kubernetes的每个部分。在过去的8个月里,我仍在努力适应。我想我可能花了3个月才达到像样的速度。”

当Matejczyk谈到这8个月里他所做的工作时,他回答说:“一个有趣的例子是我最近一直在处理的一个回归问题。我们注意到Kubernetes控制平面在特定场景下整体变慢,但我们无法将其归因于任何特定组件。最终,我们意识到一切都归结于golang层面的内存分配。两个完全独立的代码片段(作为同一个二进制文件的一部分运行)仅因为其中一个分配内存过快而相互影响性能,这非常反直觉。但将所有线索串联起来,找出这类回归问题的根源,会带来极大的满足感。”

Tyczynski 说:“这不仅是调试回归问题,也是调试和发现瓶颈。一般来说,这些可能是回归问题,但也可能是我们可以改进的地方。另一个重要领域是扩展我们希望向用户保证的内容。扩展系统的SLA和SLO覆盖范围,以便用户可以根据他们对系统性能和可扩展性的期望来信赖系统。Matt 在扩展我们的测试以使其更具代表性并涵盖更多Kubernetes概念方面做了大量工作。”

尝试加入SIG Scalability

SIG Scalability 团队一直需要新成员,如果您是那种喜欢迎接新复杂挑战,或许也喜欢“艰难之路”学习方式的开发人员或测试人员,请考虑加入这个 SIG。正如团队指出的,将 Kubernetes 专业知识添加到您的简历中绝不是一个坏主意,而这是唯一一个可以从头到尾学习所有知识的 SIG。

请参阅SIG 的文档,了解即将召开的会议、其章程等。您还可以加入#sig-scalability Slack 频道,看看它的样子。我们希望您能加入,利用这个绝佳的机会学习 Kubernetes 并同时做出贡献。