文字记录 · CC BY 3.0

主题演讲:Apple 的云原生之旅 - Alena Prokharchyk,Apple 软件工程师

本页标题、字幕、摘要和阅读笔记为已保存的 AI 译文,可能有误。时间戳与来源一致,可展开查看原始字幕,并对照原视频核对。

Apple 的 2020 Kubernetes 迁移演讲:基于命名空间的访问、共享容量、平台隔离以及采用过程中的组织工作。

CNCF [云原生计算基金会] · 发布于 · 14 分钟 · 英语 · 许可证:CC BY 3.0 · 来源:在 YouTube 上观看

转录来源:Vidleaf 上的自动语音识别(可能包含错误)。AI 标点由 Vidleaf 添加;阅读文本已应用经审核的姓名更正;时间戳锚点保留。原始转录可在下方查看。

AI生成的摘要

Alena Prokharchyk 描述了 Apple 从内部容器平台转向 Kubernetes 的过程。该演讲解释了灵活、由社区支持的系统的吸引力,同时承认了学习曲线以及重新评估现有功能的必要性。它涵盖了平台访问、容量管理、隔离以及开发人员和运维团队的不同需求。后面的部分讨论了扩展、可观测性、开发者生产力以及对开源的参与。这次迁移也是一个组织层面的故事:安全、资源和可靠性的职责随着技术栈一起发生变化。链接的章节保留了演讲中描述的具体选择和权衡。

要点

  • [1:37] Kubernetes 被呈现为一个具有可扩展组件和开放社区的灵活平台。
  • [5:54] 共享基础设施需要有意识的容量管理和租户之间的隔离。
  • [10:19] 平台采用不仅改变底层技术,也改变团队职责。

根据转录稿生成。请对照原始视频核对所链接的段落。由 Vidleaf 于 2026-10-20 审阅。摘要和要点由 Vidleaf 于 2026-10-21 审阅。

完整概述

Alena 是 Apple 的一名软件工程师,大约一年前加入,从事 Kubernetes 和云原生项目。她解释了自己被这个职位吸引的原因,并追溯了 Apple 从 Mesos 及其内部构建的容器编排器 Jarvis 走向 Kubernetes 的路径。Kubernetes 被选为更通用、更灵活的平台,具有基于插件的存储、运行时和网络提供程序、CRD 和自定义控制器,以及透明的社区。该演讲坦率地谈到了权衡,例如陡峭的学习曲线、依据云原生最佳实践重新评估此前构建的功能,以及投资于培训资源和支持。它涵盖了平台用户,包括开发人员、应用 SRE、硬件 QA 工程师、使用 CPU 和 GPU 的机器学习和批处理工程师以及财务部门,还涵盖了集群即服务和命名空间即服务两种访问模式,后者是当今的主要模式,此外还有集中式容量控制、多租户隐私与安全、CRD 管理、云原生工具、使用开源 Kubernetes PerfTest Cluster Loader 进行扩展、SIG 调度贡献,以及用于纵深防御的 microVM。在 Apple 的规模下,公司因安全管理成本、资源效率低下和运营负担而放弃了集群即服务,并开始探索虚拟集群等替代方案,这些方案在共享 Kubernetes 基础设施上提供自助服务以及虚拟化的控制平面和数据平面;microVM 让多个互不信任的租户共享节点和一个控制平面,并具有两层隔离。不断增长的足迹和跨数据中心的分布推动了对多集群工作负载管理的需求,团队正在研究 API 代理解决方案,并投资于基于服务端 WebAssembly 的函数即服务解决方案,以降低平台复杂性,同时保持高安全性和低资源利用率,其中可观测性是首要任务,并通过 CI/CD 和开发者工具追求最终用户生产力。大规模采用带来了组织变革:安全团队壮大,应用安全和 Kubernetes 平台安全被分离以维持共享责任模型,容量规划被重新思考,成立了专门的资源管理团队与财务部门合作,SRE 团队转向工程并在平台架构设计中拥有更强的话语权,同时还有跨团队技术审查委员会、专门的内部开源和开源团队,以及通过代码、CNCF TOC 董事会、Kubernetes 发布团队、文档和问题支持进行的社区参与;这次迁移最终改变的不仅是技术栈,还有参与其中的人。

带时间戳的章节摘要

Apple 工程师谈云规模

  • [0:18] Alena 在 Apple 工作。
  • [0:21] 她大约一年前加入,担任 Kubernetes 和云原生项目的软件工程师。
  • [0:21] 开源社区中的许多人问她,这份工作最吸引她的是什么。
  • [0:34] 她的答案是云基础设施的规模以及在其上运行的应用程序的多样性。
  • [0:41] 她此前主要专注于 Kubernetes 集群的配置。
  • [0:41] 她认为从应用程序和最终用户的角度看问题有助于完成闭环。

Apple 的 Mesos 历史与平台整合

  • [0:53] 了解一个团队或公司的历史有助于解释当前的决策和权衡。
  • [1:00] Apple 使用 Mesos 超过五年,并搭配一个名为 Jarvis 的内部构建容器编排器。
  • [1:06] Mesos 作为调度平台享有良好声誉,并且能够很好地扩展,以支持批处理、有状态和无状态服务的多个框架。
  • [1:16] 该容器编排器成为技能和职责委派的瓶颈,促使考虑其他选择。
  • [1:25] Apple 还使用了其他计算管理解决方案,并希望将它们整合到一个统一平台中,以提高容量利用率。

为什么选择 Kubernetes

  • [1:37] 事实证明,Kubernetes 作为编排器是明显的赢家。
  • [1:42] Kubernetes 更加通用和灵活,使团队之间能够更好地分工。
  • [1:48] 选择存储、运行时和网络提供商变成了一个插件选择,可以在不重构整个系统的情况下重新评估。
  • [2:04] 开发者被通过 CRD 和自定义控制器扩展 Kubernetes API 和核心功能的能力所吸引。
  • [2:14] Kubernetes 社区是该平台的巨大资产,其透明度和力量让开发者感到安心。
  • [2:25] 目标是满足多样化用户群体的需求,包括已经在运行 Kubernetes 集群的团队,以及从未接触过 Kubernetes 但信任该技术并希望采用它的人。

Kubernetes 迁移的权衡与团队适应

  • [2:41] 如此规模的变革需要坦诚面对成功迁移所需的权衡。
  • [2:50] 对于最终用户和平台开发者来说,Kubernetes 的学习曲线都很陡峭。
  • [2:57] 所有之前构建的平台功能都必须重新评估。
  • [3:03] 功能被质疑是否符合云原生最佳实践以及与新区平台的相关性,这可能会让人感到不适。
  • [3:14] 因为软件是由人构建的,团队接受了当前流程需要改变、人员需要适应这一事实。
  • [3:24] 团队准备投入培训资源,并为开发者提供全面支持,以确保采用成功。

Apple Kubernetes 平台用户

  • [3:34] Kubernetes 成为 Apple 在计算管理方面的平台选择。
  • [3:40] 目标目标是让大多数 Apple 工作负载运行在 Kubernetes 上。
  • [3:46] 该平台旨在构建过程中保持对最终用户的关注。
  • [3:51] 需要理解和分类平台用户,以便为硬件和软件基础设施规划建立通用模式。
  • [4:00] 一类用户是希望测试和运行容器化应用程序的 Java、Python 和 Go 开发者。
  • [4:08] 另一类是应用 SRE,专注于为其团队构建高级部署工作流。
  • [4:16] 硬件 QA 工程师是另一个例子,他们利用云原生工具探索创造性解决方案,使硬件团队的设备验证更加容易。
  • [4:29] 机器学习和批处理工作负载工程师每天使用 CPU 和 GPU 运行数千个批处理作业,用于训练机器学习模型。
  • [4:39] 财务部门也是平台用户,在放置决策和容量规划中发挥重要作用。
  • [4:46] 所有这些用户都希望获得云原生工具,以便更好地调试、记录日志、监控和追踪他们的应用程序。
  • [4:54] 平台开发者的职责是提供具有安全资源隔离和可靠调度的可扩展编排层。

Kubernetes 平台访问模型

  • [5:03] 构建高级抽象和 CLI 工具对于平台的成功和采用也是必要的。
  • [5:11] 一个大型的计算和存储资源基础设施池由 Kubernetes 管理,可以通过两种方式提供给用户:集群即服务和命名空间即服务。
  • [5:25] 命名空间即服务是当今的主要模式。
  • [5:29] SRE 管理多租户 Kubernetes 集群,而用户在一个或多个命名空间中操作,因此用户避免了基础设施管理开销,可以专注于应用程序部署和开发。
  • [5:29] 由于集群配置已经商品化,一些团队可能仍然想要集群即服务。

集中式容量控制与多租户安全

  • [5:54] 集中式容量控制需要将资源管理抽象到自己的系统中。
  • [6:00] 该系统尽可能通用,以简化未来混合云的解决方案。
  • [6:06] 该系统动态平衡集群、优先级、使用量和限制,为用户应用程序找到最佳放置位置。
  • [6:17] 资源隔离通过为每个工作负载分配优先级和配额来处理。
  • [6:22] 在多租户集群中运行应用程序的隐私和安全问题仍然必须解决。
  • [6:29] 隐私和安全必须在配置和运行时两个层面得到解决。
  • [6:34] 尽管有命名空间即服务的限制,用户仍应有权自由选择在其命名空间中运行的云原生工具。
  • [6:42] 由于某些工具需要 CRD(一种集群级资源),因此需要适当的 CRD 管理流程来实现该部署。

面向平台和开发者的云原生工具

  • [6:53] 解决技术挑战依赖于广泛的云原生工具。
  • [6:59] 这些工具包括平台层面使用的工具以及推荐给应用程序开发者的工具。
  • [7:04] 工具列表并不完整,并且随着新项目不断被评估以及发现更多开发和集成领域而持续增长。

Kubernetes 扩展与社区贡献

  • [7:15] 尽管进行了仔细规划,只有大规模运行才能揭示某些问题。
  • [7:20] 他们选择了开源 Kubernetes PerfTest 集群加载器工具来挑战他们的 3。
  • [7:26] 开发者可以编写自己的框架,但他们发现 Cluster Loader 相当强大。
  • [7:32] 他们希望更多地参与社区,并投入时间修复和扩展现有工具供他人使用。
  • [7:40] 调度是另一个直接关注点,因为他们运行包括批处理工作负载在内的混合工作负载,并希望获得合理的资源利用率。
  • [7:51] 参与 SIG 调度并回馈上游对于尽可能贴近上游非常重要。
  • [8:00] 对部分团队成员来说,这是他们首次为上游 Kubernetes 做贡献,包括参加 SIG 讨论和提交首批 issue。
  • [8:20] 在多租户环境中,许多客户的工作负载运行在同一台机器上。

MicroVM 隔离与虚拟集群

  • [8:26] 纵深防御是满足安全需求和隔离混合信任级别的常见模式。
  • [8:34] MicroVM 正被用于实现这一级别的隔离。
  • [8:39] 借助 microVM,多个互不信任的租户可以在同一批节点上运行并共享同一控制平面,同时保留两层隔离:虚拟机和容器。
  • [8:51] 在 Apple 这样的规模下,集群即服务带来了更高的安全管理成本、资源利用效率低下以及运维负担。
  • [9:02] 因此,他们开始探索虚拟集群等替代模式。

虚拟集群与多集群管理

  • [9:07] 虚拟集群在共享的 Kubernetes 基础设施上提供用户、自助服务以及虚拟化的 Kubernetes 控制平面和数据平面。
  • [9:15] 它消除了大部分安全和运维方面的顾虑。
  • [9:20] 部署足迹的增长以及跨数据中心的分布推动了对多集群工作负载管理的需求。
  • [9:20] 他们正在研究 API 代理解决方案,以便为跨多个集群管理工作负载的团队提供更好的自愈能力、利用效率、高层级障碍处理以及开发者工作流体验。
  • [9:42] 他们希望在保持高安全标准和低资源利用率的同时,降低开发者和运维人员的平台复杂度。
  • [9:42] 为此,他们正在投资一个利用服务端 WebAssembly 的函数即服务解决方案。

可观测性与开发者生产力优先事项

  • [9:57] 随着新功能和用户工作负载的不断增加,可观测性成为保持平台管理合理有序的首要任务之一,尤其是在平台不断扩展的情况下。
  • [10:09] 最终目标是终端用户的生产力和满意度,并通过有吸引力的 CI/CD 和开发者工具来实现。

技术采用带来的组织变革

  • [10:19] 大规模采用新技术往往会带来组织变革,影响管理者、财务、技术团队和领导层。
  • [10:32] 这一转型是一条漫长的道路,伴随着许多成长的烦恼。
  • [10:35] 安全团队不断壮大并承担了额外职责。
  • [10:44] 应用安全和 Kubernetes 平台安全需要明确的职责分离,以维持共享责任模型。
  • [10:54] 一个目标是重新思考容量规划,这需要一支与财务紧密合作的专职资源管理团队。
  • [11:03] 一些新团队成立了,一些团队在规模和职责上有所扩大,还有一些团队制定了新的优先事项。
  • [11:11] SRE 团队从关注运维和系统转向强调工程能力,并在平台架构设计中拥有更强的话语权。
  • [11:21] 一个稳固且稳定的平台使团队能够持续关注客户需求并更快地创新。

跨团队评审与开源支持

  • [11:30] 创新需要协作,而面向云原生项目的跨团队技术评审委员会为来自不同背景的人提供了一个安全的同行反馈场所。
  • [11:44] 委员会成员带来了多样化的专业知识,有些擅长 Kubernetes 功能开发,有些则擅长安全等领域。
  • [11:52] 在设计阶段,综合他们的意见极为有用。
  • [11:57] 有了共享平台,共享信息就成为必要之举,Apple 有一支专职团队负责管理内部开源和开源倡议。
  • [12:06] 该团队开展关于云原生和 Kubernetes 的内部培训,为首次参与开源的贡献者提供建议,并支持长期贡献者。
  • [12:21] 该团队帮助人们建立联系,并促进内部和外部协作的发展。
  • [12:27] 持续的转型几乎没有留下反思的时间,尽管反思始终是必要的。
  • [12:33] 迁移并不是每个人都愿意做的事情。

云迁移与开源社区

  • [12:37] 投资于应用和平台的现代化有利于未来,因为它能够在现有基础上采用更多云原生技术。
  • [12:47] 大规模迁移教会团队拥抱社区最佳实践和共享经验,他们希望通过多种形式的参与来回馈。
  • [12:47] 参与形式包括编写代码、在 CNCF TOC 董事会任职、协助 Kubernetes 发布团队、改进文档以及提交 issue。
  • [13:08] 创新由分享和协作驱动。
  • [13:12] 与更广泛的开源社区以及公司内其他团队通过内部开源进行分享,有助于复用现有解决方案并最大限度地减少冗余。
  • [13:23] 即使是一个小小的改变,也能开始让更大的文化变革成为现实。
  • [13:28] 迁移最终改变的不仅是技术栈,还有参与其中的人。
姓名更正由Vidleaf审核

已审核2026-10-20。原始字幕仍可在下方查看。

[0:00] ♪ ♪ 大家好,我叫 Alena,在 Apple 工作。大约一年前,我作为软件工程师加入公司,从事 Kubernetes 和云原生项目。从那时起,开源社区中有很多人问我,是什么最吸引我来到这份新工作。

[0:34] 答案很简单。是云基础设施的规模以及在其上运行的应用程序的多样性。此前,我主要专注于 Kubernetes 集群的供应。我认为从应用和最终用户端到端的角度看待事物有助于补全整个图景,所以我来到了这里。当你加入一个新团队或公司时,了解它的历史有助于理解当前的决策和权衡。Mesos 在 Apple 已经使用了五年多,并配有一个内部构建的容器编排器,名为 Jarvis。

[1:06] 它作为调度平台享有良好声誉,并且扩展性很好,能够支持多个框架来运行各种服务,如批处理、有状态和无状态服务。但该容器编排器很快成为技能和责任委派的瓶颈,因此我们开始考虑其他选择。除 Mesos 外,Apple 还使用了一些其他计算管理解决方案。随着这次转型,我们希望将它们整合起来,提供统一平台以实现更好的容量利用率。

[1:37] 我们发现 Kubernetes 作为编排器显然是赢家。由于 Kubernetes 更加通用和灵活,这意味着我们可以更好地在团队之间划分工作。关于为核心组件(如存储、运行时和网络)选择哪个提供方的决定不再是生死攸关的决定。我们知道这只是一个插件选择,而且该选择始终可以重新评估,而无需重构整个系统。对开发者来说另一个很大的吸引力是,能够通过利用 CRD 和自定义控制器来扩展 Kubernetes API 和核心功能。

[2:14] Kubernetes 社区是该平台的巨大资产。它的透明度和力量如此明显,为开发者提供了极大的安心感。目标是满足多样化用户群体的需求。我们有些团队已经在其组织中成功运行 Kubernetes 集群。也有些从未使用过 Kubernetes 的人,但他们信任这项技术并希望采用它。当发生如此规模的变革时,必须诚实地说明成功迁移所需做出的权衡。

[2:50] 众所周知,Kubernetes 的学习曲线很陡峭,不仅对最终用户如此,对平台开发者也是如此。过去构建的所有平台功能都必须重新评估。该功能当前的设计是否符合云原生最佳实践?这个功能甚至与新平台相关吗?提出并回答这些问题可能会让人感到不适。而软件是由人构建的。我们不得不接受这样一个事实:当前流程需要改变,人们也必须适应。

[3:24] 我们意识到了这一决策的影响。我们准备好投入培训资源,并为开发者提供全力支持,尽一切努力让采用取得成功。那时,Kubernetes 成为了我们在 Apple 进行算力管理的平台选择。我们的目标是在 Kubernetes 上运行 Apple 的大多数工作负载。我们希望在构建平台的同时保持对最终用户的关注。这要求我们理解并分类平台用户,以便为硬件和软件基础设施规划建立通用模式。

[4:00] 一类用户是希望测试并在容器中运行其应用程序的 Java、Python、Go 开发者。另一类是应用程序 SRE,他们专注于为团队构建高级部署工作流。另一个例子是硬件 QA 工程师,他们不惧尝试新事物,并利用云原生工具探索创造性解决方案。尽一切努力让硬件团队更容易验证设备。还有机器学习和批处理工作负载工程师,他们每天使用该平台,运行数千个批处理作业,这些作业同时使用 CPU 和 GPU 来训练机器学习模型。

[4:39] 财务部门也是平台用户,因为他们在放置决策和容量规划中扮演重要角色。所有这些用户都希望采用云原生工具,以便为其应用实现更好的调试、日志记录、监控和追踪。作为平台开发者,我们的职责是提供可扩展的编排层,具备安全的资源隔离和可靠的调度。构建高层抽象和 CLI 工具对于平台的成功和采用也是必要的。

[5:11] 因此,我们拥有由 Kubernetes 管理的庞大计算和存储资源基础设施池。将其提供给用户可以通过两种方式完成:集群即服务和命名空间即服务。命名空间即服务是我们目前的主要模式。SRE 管理多租户 Kubernetes 集群,用户在一个或多个命名空间中操作。这样,用户无需承担基础设施管理的开销,可以专注于应用部署和开发。然而,我们意识到在集群供应已经商品化的世界里,一些团队可能仍然希望采用集群即服务。

[5:54] 以集中式容量控制为目标,我们不得不将资源管理抽象到其自身的系统中。我们希望使其尽可能通用,以便为未来的混合云简化解决方案。该系统会在集群、优先级、使用量和限制之间进行动态平衡,为用户应用找到最佳放置位置。资源隔离将通过为每个工作负载分配优先级和配额来处理。然而,我们仍然必须解决在多租户集群中运行应用程序的隐私和安全问题。

[6:29] 这必须在配置和运行时两个层面完成。即使有命名空间即服务的约束,我们也希望用户能够自由选择在其命名空间中运行的云原生工具。其中一些工具需要 CRD,这是一种集群级资源。我们必须考虑合适的 CRD 管理流程,以使这种部署成为可能。如果没有广泛的云原生工具,解决这些技术挑战是不可能的。这些工具包括我们在平台层面使用的工具,以及我们推荐给应用开发者的工具。

[7:04] 这份列表并不完整,并且随着我们不断评估新项目并发现更多开发和集成领域而持续增长。尽管进行了周密的规划,只有大规模运行才能揭示某些问题。我们选择了开源 Kubernetes PerfTest 集群加载器工具。来挑战我们的 3。开发者总是可以编写自己的框架,但我们发现 Cluster Loader 相当强大。我们希望更多地与社区互动,并投入时间修复和扩展可供他人使用的现有工具。

[7:40] 另一个立即关注的领域是调度。我们在 Kubernetes 上运行混合类型的工作负载,包括批处理工作负载,并希望保持合理的资源利用率。参与 SIG 调度并回馈对我们非常重要,因为我们希望尽可能贴近上游。对于我们团队中的一些人来说,这是他们第一次为上游 Kubernetes 做贡献,经历加入 SICK 进行讨论的流程。提交第一批 Kubernetes issue 并认识到帮助社区的各种方式,这一切都是全新而令人兴奋的。

[8:16] 我想分享一些我们当前的优先事项。在多租户环境中,许多客户的工作负载运行在同一台机器上。为了满足安全要求并在混合信任级别之间提供隔离,一种常见模式是利用纵深防御。我们正在寻求通过 microVM 实现这种级别的隔离。这样,多个不受信任的租户可以在同一节点上运行并共享同一控制平面,同时继续提供两层隔离:虚拟机和容器。

[8:51] 集群即服务伴随着安全管理增加、资源利用效率低下和运营负担的成本。在 Apple 这样规模的公司中。因此,我们开始探索虚拟集群等替代模型。通过虚拟集群,用户在共享 Kubernetes 基础设施之上自助服务虚拟化的 Kubernetes 控制平面和数据平面。它消除了大部分安全和运营方面的顾虑。随着部署足迹的增长和跨数据中心的分布,对多集群工作负载管理的需求也随之而来。我们正在研究 API 代理解决方案,为跨多个集群管理工作负载的团队提供改进的自愈、利用效率、高层抽象和开发者工作流体验。

[9:42] 我们希望降低开发人员和运维人员的平台复杂性。同时,我们希望保持高安全标准和低资源利用率。因此,我们正在投资函数即服务解决方案,利用服务端 WebAssembly 来解决这个问题。随着新功能和用户工作负载的不断增加,可观测性成为首要任务之一。我们希望随着平台的发展,保持平台管理的合理性。最终用户的生产力和幸福感是我们的最终目标。我们一直在寻找通过引人注目的 CI/CD 和开发人员工具来改进它的方法。

[10:19] 在如此大规模上采用新技术往往伴随着组织变革。你需要改变一切,改变每个人,从管理人员和财务部门到技术团队和你自己。这是一条漫长的道路,伴随着许多成长的烦恼。我们的安全团队扩大了规模,承担了额外的责任。多租户集群中的保险安全并非易事。我们必须在应用安全和 Kubernetes 平台安全之间明确划分关注点,以维持共享责任模型。

[10:54] 我们的目标之一是重新思考容量规划。需要一个专门的资源管理团队与财务部门密切合作。一些新团队成立了,一些团队在规模和职责上有所增长,还有一些团队制定了新的优先事项。SRE 团队过去更侧重于运营和系统。现在它更强调工程,并在平台架构设计中拥有更强的话语权。拥有一个坚实稳定的平台,使得我们能够持续关注客户需求并更快地创新。

[11:30] 没有协作就不可能实现创新。为基于云原生的项目组建跨团队技术审查委员会对我们来说非常宝贵。这是一个安全的地方,可以从具有不同背景的人那里获得同行反馈。有些人在为 Kubernetes 开发功能方面更有经验,有些人在安全等特定技术领域拥有深厚的专业知识。在设计阶段获得他们的综合意见非常有用。在共享平台上,共享信息成为必要。我们很幸运在 Apple 有一个专门的团队管理内部开源和开源倡议。

[12:06] 该团队专注于云原生和 Kubernetes 的内部培训,为想要开始做出首次开源贡献的人提供建议,并支持那些已经为开源贡献了一段时间的人。该团队帮助连接人们并发展内部和外部协作。正在进行的转型几乎没有留下反思的时间,但反思总是必要的。迁移并不是每个人都想做的事情。

[12:37] 但那些投资于现代化其应用和平台的人,将通过在此基础之上采用更多云原生技术而在未来受益。大规模迁移教会我们拥抱社区最佳实践和共享学习。我们想要回馈,并意识到参与有多种形式:编写代码、在 CNCF 的 TOC 董事会任职、帮助 Kubernetes 发布团队、改进文档、提交问题等等。

[13:08] 创新由分享和协作驱动。与开源中更广泛的社区分享,通过内部开源与公司中的另一个团队分享,有助于实现现有解决方案的复用并最大限度地减少冗余。即使是微小的改变也能开始让更大的文化变革成为现实。我们意识到,最终迁移改变的不仅是技术栈,还有参与其中的人。如果您有任何问题,请联系我们。谢谢。

查看英文原始字幕

[0:00] ♪ ♪ Hello everyone, my name is Alina and I work for Apple. I joined the company as a software engineer about a year ago to work on Kubernetes and cloud-native projects. Since then, so many people from the open-source community have asked me what attracted me the most to my new job.

[0:34] And the answer is easy. It is the scale of the cloud infrastructure and the variety of applications running on it. Before, I mainly focused on Kubernetes clusters provisioning. I thought that looking at things from the application and end-user end-guide scale would help to complete the circle, so here I am. When you join a new team or a company, getting to know its history helps to understand current decisions and trade-offs. Mesos has been used at Apple for over five years with an internally built container orchestrator called Jarvis.

[1:06] It had a good reputation as a scheduling platform and it scaled well to support multiple frameworks for running a variety of services like Batch, Stateful and Stateless. But the container orchestrator soon became a bottleneck for skills and responsibilities delegation, so we started considering other choices. In addition to Mesos, Apple used some other solutions for compute management. Along with the transition, we wanted to consolidate them and provide the unified platform for better capacity utilization.

[1:37] We found that Kubernetes was an obvious winner as an orchestrator. With Kubernetes being more generic and fluggable, it meant we could better divide work among teams. The decisions on what provider to choose for core components like storage, runtime, and network were no longer life or death decisions. We knew that it was just a plugin choice and the choice could always be re-evaluated without refactoring the entire system. Another big point of attraction for developers was an ability to extend Kubernetes APIs and core functionality by leveraging CRDs and custom controllers.

[2:14] The Kubernetes community was a huge asset to the platform. Its transparency and power was so obvious and provided a great level of comfort to developers. The goal was to meet the demand of diverse user base. We had teams who were already successfully running Kubernetes clusters in their organization. And we had people who had never worked with Kubernetes before, but trusted the technology and wanted to adopt it. When the change of this magnitude happens, it is important to be honest about the trade-offs that need to be made for successful migration.

[2:50] It is a known fact that Kubernetes' learning curve is steep, not only for end users, but for platform developers too. All the platform features that were built in the past had to be re-evaluated. Is the feature's current design aligned with the cloud-native best practices? Is this feature even relevant to the new platform? Asking and answering these questions can be uncomfortable for people. and software is built by people. We had to accept the fact that there would be a need for a change to the current processes, and people would have to adapt.

[3:24] We realized the impact of the decision. We were ready to invest in training resources and provide full support for developers, anything to make the adoption successful. At that point, Kubernetes became our platform choice for compute management at Apple. Our target goal is to make the majority of Apple workloads run on Kubernetes. We want to maintain end-user focus while building the platform. That required us to understand and categorize our platform users to establish common patterns for hardware and software infrastructure planning.

[4:00] One category of users are Java, Python, Go developers who want to test and run their applications in the containers. Another category are applications SREs whose focus is on building advanced deployment workflows for their teams. Another example is hardware QA engineers who are not afraid to try new things and explore creative solutions using cloud-native tools. anything to make it easier for hardware teams to validate devices. There are machine learning and batch workloads engineers who utilize the platform daily, running thousands of batch jobs that use both CPU and GPUs for training machine learning models.

[4:39] Finance is also a platform user as they're a big part of placement decisions and capacity planning. All of these users want to adopt cloud-native tools for better debugging, logging, monitoring, and tracing for their apps. Our responsibility as platform developers is to provide a scalable orchestration layer with secure resource isolation and reliable scheduling. Building high-level obstructions and CLI tools is also necessary for the platform's success and adoption.

[5:11] So we have this big infrastructure pool of compute and storage resources managed by Kubernetes. Providing it to users can be done in two ways: cluster as a service and namespace as a service. Namespace as a Service is our primary model today. SRE manages multi-tenant Kubernetes clusters and user operates in one or multiple namespaces. This way, users do not have an overhead of infrastructure management and can focus on application deployment and development. However, we realize that in the world where cluster provisioning has been commodified, some teams may still want cluster as a service.

[5:54] With the goal of centralized capacity control, we had to abstract resource management to its own system. We wanted to make it as generic as possible to streamline the solution for the hybrid cloud in the future. The system would do a dynamic balancing between clusters, priority, usage, and limits to find the best placement for the user application. Resource isolation would be handled by assigning priority and quota to each workload. However, we still had to address privacy and security concerns of running applications in multi-tenant clusters.

[6:29] It had to be done both on configuration and runtime levels. Even with the namespace as a service constraint, we wanted users to have a freedom to choose cloud-native tools to run in their namespaces. Some of these tools require CRDs, a cluster-level resource. We have to think of a proper CRD management flow to make that deployment possible. Solving these technical challenges would not have been possible without the wide array of cloud-native tools. those we use on the platform level, and those we recommend to application developers.

[7:04] This list is not complete and keeps on growing as we constantly evaluate new projects and find more areas for development and integration. With all the careful planning, only running things at scale could reveal certain issues. We have chosen open source Kubernetes PerfTest cluster loader tool. to challenge our class 3s. Developers can always write their own framework, but we found Cluster Loader being quite powerful. We wanted to engage more with the community and invest time in fixing and expanding the existing tool that could be used by others.

[7:40] Another area of immediate focus was scheduling. We run mixed types of workloads on Kubernetes, including batch workloads, and want to maintain a reasonable resource utilization. Participating in SIG scheduling and contributing back is very important to us, as we want to stay as close to the upstream as possible. For some people in our team, it was their very first experience contributing to Upstream Kubernetes, going through the process of joining SICK for discussions. Filing first Kubernetes issues and recognizing the various ways to help the community, it was all new and exciting.

[8:16] I would like to share some of our current priorities. In a multi-tenant environment, many customers' workloads run on the same machine. To meet security requirements and provide isolation between mixed level of trust, A common pattern is to leverage defense in depth. We are seeking to enable this level of isolation with microVMs. With that, multiple untrusting tenants can run on the same nodes and share the same control plane, while continuing to provide two layers of isolation: virtual machine and container.

[8:51] Cluster as a Service comes with the cost of increased security management, resource utilization inefficiency, and operational burden. in the companies of Apple's scale. As a result, we started exploring alternative models like virtual clusters. With Virtual Cluster, User, Self Services, Virtualized Kubernetes Control and Data Plane, on top of shared Kubernetes infrastructure. It eliminates the majority of security and operational concerns. With the deployment footprint growth and distribution across data centers, comes the demand for multi-cluster workload management. We are researching on API proxy solutions to offer improved self-healing, utilization efficiency, high-level obstructions, and developer workflow experiences for teams that manage workloads across multiple clusters.

[9:42] We want to reduce the platform complexity for developers and operators. At the same time, we want to maintain high security standards and low resource utilization. So we are investing in function as a service solution, leveraging server-side web assembly to solve this. With the constant additions of the new features and user workloads, observability becomes one of the top priorities. We want to keep the platform management sane as the platform grows. End-user productivity and happiness is our end goal. We are always looking into ways to improve it with compelling CI/CD and developer tooling.

[10:19] Adopting new technology on such a big scale often comes hand in hand with organizational changes. You need to change everything and everyone from managers and finance to tech teams and yourself. It is a long road with a lot of growing pains. Our security team grew and took on extra responsibilities. Insurance security in multi-attendant cluster is not a trivial task. We had to have a clear separation of concern between application security and Kubernetes platform security to maintain a shared responsibility model.

[10:54] One of our goals was to rethink capacity planning. Having a dedicated resource management team working close with the finance department was necessary. Some new teams were formed, some grew in size and responsibilities, and some developed a new set of priorities. SRE team used to be more operational and systems focused. Now it has an emphasis on engineering and a much stronger voice in the platform architectural design. Having a solid and stable platform made it possible to maintain focus on the customer's needs and innovate faster.

[11:30] Innovation is impossible without collaboration. Forming a cross-team technical review board for cloud-native based projects was invaluable to us. It is a safe place to get peer feedback from people having different backgrounds. Some have more experience with developing features for Kubernetes, and some have a deep expertise in a particular technical domain like security. Getting their combined input is extremely useful during the design stage. With a shared platform, sharing information becomes a necessity. We are lucky to have a dedicated team managing inner source and open source initiatives here at Apple.

[12:06] The team focuses on internal trainings on Cloud Native and Kubernetes, advises people who want to start making their first open source contributions, and supports those who have been contributing to open source for a while. The team helps to connect people and grow both internal and external collaborations. The ongoing transformation leaves very little time for reflection, but the reflection is always necessary. Migration is not something everyone wants to do.

[12:37] But those who invest in modernizing their application and platform benefit in the future by adopting more cloud-native technologies on top of the foundation. Migration at scale has taught us to embrace the community best practices and shared learnings. We wanted to give back and have realized that engagement comes in many forms: writing code, serving on TOC board for CNCF, helping Kubernetes release team, improving documentation, filing issues, and many more.

[13:08] Innovation is driven by sharing and collaboration. Sharing with a broader community in the open source, sharing with another team in your company through the inner source, helps to enable reuse of existing solutions and minimize redundancy. Even small change can begin to make larger cultural change a reality. We have realized that in the end the migration changes not just the technical stack, but the people involved in it. Please reach out to us if you have any questions. Thank you.

在Vidleaf工作台中打开

搜索转录文本,选择行,复制带时间戳的引文,翻译。

在工作台中打开 →

署名

“主题演讲:Apple 的云原生之旅 - Alena Prokharchyk,Apple 软件工程师”由 CNCF [云原生计算基金会](https://www.youtube.com/@cncf)制作,根据 CC BY 3.0(https://creativecommons.org/licenses/by/3.0/)许可。源视频:https://www.youtube.com/watch?v=Tx8qXC-U3KM。本页面是视频的文本转录,添加了段落分隔和时间戳;创作者与 Vidleaf 无关联,也不为其背书。Vidleaf 添加了 AI 标点和 AI 生成的摘要;原始措辞仍可在本页面上找到。阅读文本还包括 Vidleaf 经来源验证的姓名更正。

您是创作者或权利持有人吗?请求更正或移除:copyright@vidleaf.app(参见关于这些页面)。

最后更新于