作为 Chaos Mesh LFX 学员的体验
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

我是南京大学软件工程专业的研究生,研究方向聚焦于 DevOps。该领域与混沌工程和可观测性有着天然的关联。为了深入参与开源社区、加深对 Kubernetes 的理解并体验基础设施相关的日常工作,我申请了 2021 年秋季的 CNCF LFX Mentorship 计划,参与 Chaos Mesh 项目开发。
申请过程
八月底,我结束了一段商业性质的实习。不出所料,我发现自己对商业相关工作兴趣不大,但对基础设施技术始终抱有强烈热情。机缘巧合下,我在 CNCF LFX Mentorship 计划中发现了 Chaos Mesh 项目。这正是一个参与开源项目的绝佳机会——也是我长久以来的梦想。考虑到自身技术栈匹配,我在截止日期前提交了简历。
三天后,我收到了导师发来的面试邮件。作为面试环节,导师布置了一项小作业:编写一个能暴露 Prometheus 指标的 mini-node-exporter,并在 Grafana 仪表盘中展示数据。同时要求我将 mini-node-exporter、配置好的 Prometheus 和 Grafana 仪表盘部署到 Kubernetes 平台。整个设计和实现过程相当顺利,唯一的难点在于将 Grafana 仪表盘编写为 Kubernetes 部署所需的 YAML 配置。经过多次查阅文档和实验验证,最终成功解决了这个问题。
8 月 30 日,我幸运地收到了通过面试的好消息。在与导师的一对一会议中,我们简要交流了我对 Kubernetes 等技术的熟悉程度、项目主要任务和关键时间节点。我也提出了自己的顾虑,包括研究生实验室项目可能影响实习进度,以及指标设计规范等问题。导师非常理解我的处境,并逐一解答了这些疑虑。
项目执行
我申请的项目名为 Chaos Mesh 监控指标,旨在通过收集指标并提供 Grafana 仪表盘来增强 Chaos Mesh 系统的可观测性。
项目前两周,我熟悉了 Chaos Mesh 的业务流程和部分代码细节。接下来的两周开始撰写设计文档,梳理所有需要采集的指标及其收集方法。期间我深入研究了指标设计规范,并通过与导师的会议明确了提案细节和部分代码逻辑。
大部分指标采集相对简单,只需对数据库对象、k8s 对象进行基础查询或简单计数。但部分特殊指标的采集颇具挑战:例如需要在对应容器的网络命名空间内执行命令获取数据,或通过三种不同的容器运行时查询守护进程下的所有容器,抑或是收集 gRPC 客户端与服务器间的通信数据。
这些任务对我来说都是全新领域,因此我时常需要向导师寻求技术支持——而导师总是能及时给予专业指导。导师在该领域深厚的知识储备和丰富经验令我印象深刻。在导师的悉心指导下,我最终完成了设计方案的 RFC 文档。为跟踪工作进度,我还创建了专门的 跟踪工单。

然而在后续编码工作中,我遇到了各种问题。回顾发现其中许多问题本可提前解决,因此总结建议如下:
保持批判性思考。接受提案时,我对每个指标都凭直觉提出了解决方案,却忽略了一些根本问题:这些指标是否必要?是否有更优的现成方案?这些基础问题本应在提案阶段解决,却被遗留到后续设计实施阶段。例如提交RFC时,导师和评审提醒有些指标已在controller-runtime库实现;处理BPM相关指标时也收到类似质询,这时我才意识到自己从未关注过这点。

持续有效沟通。如何高效沟通是本次导师计划的重要课题,最深体会是:寻求建议前最好先提供选项。即使这些选项未必可行,但能体现你的思考过程。除非经过深思仍无头绪,否则不要让他人陷入开放式问题的困扰。
理解开源文化。这是我首次实际参与开源,与企业工作差异显著:
-
信息同步方式不同。企业常通过面对面会议沟通,而开源社区交流集中在Slack频道、GitHub issue和PR中。因此需要完整记录工作进展,方便他人随时了解状态。初期我沿用企业习惯维护在线研发文档,后来发现使用GitHub看板或issue更能减少导师的跨平台沟通成本。

在线研发文档 -
自动化测试更严谨。企业通常只有静态分析、单元测试和基础冒烟测试,主要依赖人工测试。而开源项目的自动化流水线包含更全面的测试用例:集成测试、端到端测试、许可证检查等,初步保障了代码质量与安全性。
-
代码评审机制差异。开源社区没有专属评审人,参与者可能是用户、维护者或自发参与的社区成员,这导致评审周期往往更长。
项目结束后
这12周是段宝贵经历,让我对Kubernetes、CRD和可观测性有了更深理解,同时也意识到在代码架构优化、Linux基础和容器技术方面仍有不足,学无止境!
由于研究生课题压力超出预期,我没能投入足够时间完成Grafana看板的设计。后续定会持续跟进,希望圆满收官这个项目。
特别感谢我的导师 @STRRL。在实习期间,我遇到了许多项目难题,例如Git操作、循环依赖解决方案以及寻找CRI-O的运行时接口。没有导师的耐心指导,我很难完成这些陌生的技术挑战。同时感谢Chaos Mesh的维护者们审阅我的代码,以及CNCF LFX Mentorship项目为我们这些渴望参与开源社区的人提供了绝佳平台。

最后,希望每位渴望加入开源社区的同学都能通过LFX Mentorship迈出第一步!