这篇文章已经一年多了,较旧的文章可能包含过时的内容。请检查从发表以来,页面中的信息是否变得不正确。
聚焦 SIG Apps
在我们正在进行的 SIG 聚焦系列中,我们通过与 Kubernetes 项目各个特别兴趣小组(SIG)的领导者对话,深入探讨 Kubernetes 项目的核心。这一次,我们聚焦于SIG Apps,这个小组负责 Kubernetes 上与应用程序开发、部署和操作相关的所有内容。Sandipan Panda([DevZero](https://www.devzero.io/))有机会采访了 SIG Apps 的主席和技术负责人Maciej Szulik(Defense Unicorns)以及 Janet Kuo(Google)。他们分享了在 Kubernetes 生态系统中关于应用管理的经验、挑战以及未来愿景。
自我介绍
Sandipan:你好,能否先简单介绍一下你自己、你的角色,以及你在Kubernetes 社区中的经历,这些经历是如何引导你担任 SIG Apps 的当前角色的?
Maciej:嗨,我叫 Maciej,是 SIG Apps 的负责人之一。除了这个角色,你还可以看到我在协助 SIG CLI 的工作,同时我也是指导委员会的成员之一。自 2014 年底以来,我一直为Kubernetes 做出贡献,涉及的领域包括控制器、API 服务器以及 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 相关工作负载所带来的挑战。在此值得一提的是,过去几年我们支持的两个工作组:
- Batch 工作组,该工作组致力于在 Kubernetes 上运行 HPC、AI/ML 和数据分析作业。
- Serving 工作组,该工作组专注于硬件加速的 AI/ML 推理。
最佳实践与挑战
Sandipan:SIG Apps 在为 Kubernetes 开发应用程序管理最佳实践方面发挥着关键作用。你能分享一些这些最佳实践吗?以及它们如何帮助改进应用程序生命周期管理?
- 实施健康检查和就绪探针 确保你的应用程序处于健康状态并准备好处理流量,从而提高可靠性和正常运行时间。结合全面的日志记录、监控和跟踪解决方案,上述措施将为您提供应用程序行为的洞察,使你能够快速识别并解决问题。
- 根据资源利用率或自定义指标自动扩缩你的应用,优化资源使用并确保您的应用程序能够处理不同的负载。
- 对于无状态应用程序使用 Deployment,对于有状态应用程序使用 StatefulSet,对于批处理工作负载使用 Job 和 CronJob,在每个节点上运行守护进程时使用DaemonSet。使用 Operator 和 CRD 扩展 Kubernetes API 以自动化复杂应用程序的部署、管理和生命周期,使其更易于操作并减少手动干预。
Sandipan:SIG Apps 面临的一些常见挑战是什么?你们是如何解决这些问题的?
我们一直面临的最大挑战是需要拒绝许多功能、想法和改进。这需要大量的纪律性和耐心,以便能够解释做出这些决定背后的原因。
Sandipan:Kubernetes 的演进如何影响了 SIG Apps 的工作?Kubernetes 最近是否有任何变化或即将推出的功能,你认为对SIG Apps 特别相关或有益?
对我们以及围绕 SIG Apps 的整个社区而言,最大的好处是能够通过自定义资源定义(Custom Resource Definitions)扩展Kubernetes。用户可以利用内置控制器构建自己的自定义控制器,以实现他们可能面对的各种复杂用例,而我们作为核心维护者,可能没有考虑过这些用例,或者无法在 Kubernetes 内部高效解决。
贡献于 SIG Apps
Sandipan:对于想要参与 SIG Apps 的新贡献者,有哪些机会?你会给他们什么建议?
我们经常被问道:“你们建议我们从哪个好的初始问题开始?” :-)但遗憾的是,这个问题没有简单的答案。我们总是告诉大家,为核心控制器做贡献的最佳方式是找到一个你愿意花时间研究的控制器。阅读代码,然后尝试运行针对该控制器的单元测试和集成测试。一旦你掌握了大致的概念,试着破坏它并再次运行测试以验证你的改动。当你开始有信心理解了这个特定的控制器后,你可以搜索影响该控制器的待处理问题,提供一些建议,解释用户遇到的问题,或者尝试提交你的第一个修复。
正如我们所说,在这条道路上没有捷径可走;你需要花时间研究代码库,以理解我们逐步积累的所有边缘情况,从而达到我们现在的位置。一旦你在一个控制器上取得了成功,你就需要在其他控制器上重复同样的过程。
Sandipan:SIG Apps 如何从社区收集反馈,以及这些反馈是如何整合到你们的工作中的?
我们总是鼓励每个人参加我们的双周会议,并在会上提出他们的问题和解决方案。只要你是在 Kubernetes 上解决一个有趣的问题,并且能够对任何核心控制器提供有价值的反馈,我们都非常乐意听取每个人的意见。
展望未来
Sandipan:展望未来,Kubernetes 中应用程序管理的关键关注领域或即将到来的趋势有哪些是SIG Apps 感到兴奋的?SIG 是如何适应这些趋势的?
当前的 AI 热潮无疑是主要的驱动因素;如上所述,我们有两个工作组,每个工作组都涵盖了它的一个不同方面。
Sandipan:关于这个 SIG,你们最喜欢的事情有哪些?
毫无疑问,参与我们会议和Slack 频道的人们是最让我们感到欣慰的。他们不知疲倦地帮助处理问题、拉取请求,并投入大量的时间(很多时候是他们的私人时间)来让Kubernetes 变得更好!
SIG Apps 是 Kubernetes 社区的重要组成部分,帮助塑造了应用程序如何在大规模下部署和管理的方式。从改进 Kubernetes的工作负载 API 到推动 AI/ML 应用程序管理的创新,SIG Apps不断适应以满足现代应用程序开发者和操作人员的需求。无论你是新贡献者还是有经验的开发者,都有机会参与其中并产生影响。
如果你有兴趣了解更多关于 SIG Apps 的信息或为其做出贡献,务必查看他们的SIG README,并加入他们的双周会议。