聚焦 SIG Apps

在我们持续进行的 SIG Spotlight 系列中,我们通过与各个特别兴趣小组(SIG)的负责人对话,深入了解 Kubernetes 项目的核心。这一次,我们聚焦于 SIG Apps,这个小组负责与在 Kubernetes 上开发、部署和运维应用程序相关的一切事务。Sandipan PandaDevZero)有幸采访了 SIG Apps 的主席兼技术负责人 Maciej SzulikDefense Unicorns)和 Janet KuoGoogle)。他们分享了在 Kubernetes 生态系统中应用管理的经验、挑战和未来愿景。

介绍

Sandipan:你好,能先简单介绍一下你自己、你的角色,以及你在 Kubernetes 社区的经历是如何让你担任 SIG Apps 当前的职务的吗?

Maciej:大家好,我叫 Maciej,是 SIG Apps 的负责人之一。除了这个角色,你还可以在 SIG CLI 看到我,我也是指导委员会的成员之一。自 2014 年末以来,我一直在为 Kubernetes 做出贡献,涉及控制器、apiserver 和 kubectl 等多个领域。

Janet:当然!我是 Janet,Google 的一名主任软件工程师。自 Kubernetes 项目早期,甚至在 2015 年 1.0 版本发布之前,我就深度参与其中。这是一段奇妙的旅程!

我目前在 Kubernetes 社区的角色是 SIG Apps 的主席和技术负责人之一。我与 SIG Apps 的缘分始于自然而然。我从构建 Deployment API 和添加滚动更新功能开始。我很自然地倾向于 SIG Apps,并越来越多地参与其中。随着时间的推移,我承担了更多的责任,最终担任了目前的领导角色。

关于 SIG Apps

以下所有回答均由 Maciej 和 Janet 共同提供。

Sandipan:对于不熟悉的人,您能概述一下 SIG Apps 的使命和目标吗?它旨在解决 Kubernetes 生态系统中的哪些关键问题?

正如我们的章程所述,我们涵盖了与在 Kubernetes 上开发、部署和运维应用程序相关的广泛领域。简而言之,这意味着我们欢迎每一个人参加我们每两周一次的会议,讨论在 Kubernetes 上编写和部署各种应用程序的起伏。

Sandipan:SIG Apps 目前正在进行哪些最重要的项目或倡议?

目前,推动我们控制器开发的主要因素是运行各种 AI 相关工作负载所带来的挑战。这里值得称赞的是我们过去几年赞助的两个工作组:

  1. 批处理工作组,该工作组致力于在 Kubernetes 之上运行 HPC、AI/ML 和数据分析作业。
  2. 服务工作组,该工作组专注于硬件加速的 AI/ML 推理。

最佳实践和挑战

Sandipan:SIG Apps 在为 Kubernetes 制定应用程序管理最佳实践方面发挥着至关重要的作用。您能分享一些这些最佳实践以及它们如何帮助改善应用程序生命周期管理吗?

  1. 实施健康检查和就绪探针可确保您的应用程序健康并准备好提供流量,从而提高可靠性和正常运行时间。以上内容结合全面的日志记录、监控和追踪解决方案,将为您提供有关应用程序行为的洞察,使您能够快速识别和解决问题。

  2. 根据资源利用率或自定义指标自动伸缩您的应用程序,优化资源使用,并确保您的应用程序可以处理不同的负载。

  3. 对无状态应用程序使用 Deployment,对有状态应用程序使用 StatefulSet,对批处理工作负载使用 Job 和 CronJob,对在每个节点上运行守护进程使用 DaemonSet。使用 Operator 和 CRD 来扩展 Kubernetes API,以自动化复杂应用程序的部署、管理和生命周期,使其更易于运维并减少手动干预。

Sandipan:SIG Apps 面临哪些常见的挑战,你们是如何应对的?

我们一直面临的最大挑战是需要拒绝许多功能、想法和改进。这需要极大的纪律和耐心,才能解释这些决定背后的原因。

Sandipan:Kubernetes 的演进如何影响了 SIG Apps 的工作?Kubernetes 中是否有任何最近的变化或即将推出的功能,您认为对 SIG Apps 特别相关或有益?

对我们和整个 SIG Apps 社区来说,最大的好处是能够使用自定义资源定义来扩展 Kubernetes,以及用户可以构建自己的自定义控制器,利用内置控制器来实现他们可能拥有的任何复杂用例,而我们作为核心维护者没有考虑过或无法在 Kubernetes 内部有效解决。

为 SIG Apps 做贡献

Sandipan:对于想参与 SIG Apps 的新贡献者,有哪些机会?您会给他们什么建议?

我们经常被问到:“你们有什么好的入门问题可以推荐我们开始吗?” :-) 但不幸的是,这个问题没有简单的答案。我们总是告诉大家,开始为核心控制器做贡献的最佳选择是找一个你愿意花时间研究的。通读代码,然后尝试运行专注于该控制器的单元测试和集成测试。一旦你掌握了大概的思路,就尝试破坏它和测试,再次验证你的破坏。当你开始对自己理解那个特定控制器有信心时,你可能想搜索影响该控制器的未解决问题,要么提供建议,解释用户遇到的问题,要么尝试你的第一个修复。

就像我们说的,这条路上没有捷径;你需要花时间研究代码库,以理解我们逐步构建起来的所有边缘情况,才能达到我们现在的水平。一旦你在一个控制器上取得成功,你需要与其他控制器重复同样的过程。

Sandipan:SIG Apps 如何从社区收集反馈,这些反馈又是如何整合到你们的工作中的?

我们总是鼓励大家在我们每两周一次的会议上展示他们的问题和解决方案。只要你在 Kubernetes 上解决一个有趣的问题,并且能提供关于任何核心控制器的宝贵反馈,我们总是乐于倾听。

展望未来

Sandipan:展望未来,SIG Apps 对 Kubernetes 中应用程序管理的关键关注领域或即将到来的趋势有哪些感到兴奋?SIG 是如何适应这些趋势的?

当前的人工智能热潮无疑是主要驱动因素;如上所述,我们有两个工作组,每个工作组都覆盖了它的一个不同方面。

Sandipan:关于这个 SIG,你最喜欢的事情是什么?

毫无疑问,是那些参加我们会议和在 Slack 上的人们,他们不懈地帮助分类问题、拉取请求,并投入大量时间(通常是他们的私人时间)来使 Kubernetes 变得伟大!


SIG Apps 是 Kubernetes 社区的重要组成部分,帮助塑造了应用程序如何大规模部署和管理。从改进 Kubernetes 的工作负载 API 到推动 AI/ML 应用程序管理的创新,SIG Apps 正在不断适应现代应用程序开发人员和运维人员的需求。无论您是新贡献者还是经验丰富的开发人员,总有机会参与进来并产生影响。

如果您有兴趣了解更多信息或为 SIG Apps 做出贡献,请务必查看他们的 SIG README 并参加他们每两周一次的会议