今日的文章作为该系列文章中的第一篇,将解释为什么管理员和架构师应该基于 Google Kubernetes Engine(GKE)来构建批处理平台。
Kubernetes 已成为用于部署和管理容器化应用程序的领先容器编排平台,加快了创新步伐。该平台不仅限于运行微服务,还提供了一个强大的框架用于编排批处理工作负载,例如数据处理作业、训练机器学习模型、运行科学模拟和其他计算密集型任务。GKE 是一种托管的 Kubernetes 解决方案,它以经济高效的方式抽象了底层基础架构并加快了用户的价值实现时间。
批处理平台按照接收顺序处理批处理工作负载(定义为 Kubernetes 作业)。批处理平台可能会包含一个队列来应用您的业务案例逻辑。
批处理平台中有两个关键的 Kubernetes 资源:作业和 Pod。您可以通过 Kubernetes Job API 管理作业。一项作业会创建一个或多个 Pod,并继续重试执行这些 Pod,直到指定数量的 Pod 成功终止。当 Pod 成功完成时,作业会跟踪成功完成情况。当达到指定的成功完成次数时,作业或任务被视为完成。
GKE 是一种托管 Kubernetes 解决方案,可简化基础设施和工作负载编排的复杂性。让我们更深入地了解 GKE 的功能,这些功能使其成为操作批处理平台的绝佳场所。
集群架构和可用资源
一个 GKE 环境由节点所组成,这些节点是 Compute Engine 虚拟机(VM),它们组合在一起形成集群。Autopilot 模式下的 GKE 会自动管理您的集群配置,包括节点、扩展、安全性和其他预配置设置,以便您可以专注于工作负载。Autopilot 集群默认是高可用的。
Google Cloud 不断推出新的工作负载优化 VM 系列和形式;请访问机器系列资源和比较指南,查看当前可用于您的工作负载的选项。
可伸缩性
GKE 能够托管提供商目前可以托管的最大 Kubernetes 集群。每个集群 15,000 个节点(开源 Kubernetes 的节点数为 5,000 个),这是许多批处理用例的关键规模。
拜耳作物科学等客户利用 GKE 规模每小时处理约 150 亿个基因型,PGS 使用 GKE 构建了相当于世界上最大的超级计算机之一的计算机。GKE 可以创建多个节点池,每个节点池具有不同的类型/配置和一系列虚拟机,以运行各种需求的工作负载。
多租户
GKE 集群多租户是管理许多单租户集群和管理访问控制的替代方案。在此模式中,多租户集群由称为“租户”的多个用户和/或工作负载共享。GKE 允许基于命名空间的租户隔离;您可以将每个租户及其 Kubernetes 资源分离到自己的命名空间中。然后,您可以使用政策来强制实施租户隔离、限制 API 访问、设置配额以限制资源使用以及限制允许容器执行的操作。
排队和“公平共享”
作为管理员,您可以实施政策与配置,以便在提交工作负载的租户之间公平地共享底层集群资源。您可以决定在这种情况下什么是公平的;您可能希望为每个租户分配与其最低工作负载要求成比例的资源配额限制,以确保平台上有空间容纳所有租户的工作负载。或是您可以在没有可用资源时对传入作业进行排队,并按照接收顺序处理它们。
Kueue 是 Kubernetes 原生作业排队系统,用于 Kubernetes 集群中的批处理、高性能计算、机器学习和类似应用程序。为了帮助租户之间公平共享集群资源,Kueue 管理配额以及作业如何使用它们。Kueue 决定作业何时应该等待、何时允许作业开始(如可以创建 pod)以及何时应抢占作业(如应删除活动的 pod)。下图显示了从用户提交作业到 Kueue 通过适当的 nodeAffinity 承认作业以及激活 Kubernetes 的其他部分来处理工作负载的流程。
为了帮助管理员配置批处理行为,Kueue 引入了 ClusterQueue(一个集群范围的对象,用于管理 CPU、内存和硬件加速器等资源池)等概念。 ClusterQueues 可以分组为队列;属于同一队列的 ClusterQueue 可以互相借用未使用的配额,并且可以使用 ClusterQueue 的 BorrowingLimit 来控制这种借用。
ResourceFlavor 是 Kueue 中的一个对象,它表示资源变化,并允许您通过标签和污点将它们与集群节点关联起来。例如,在您的集群中,您可能拥有具有不同 CPU 架构(比如 x86、Arm)或不同品牌和型号的加速器(例如 Nvidia A100、Nvidia T4 等)的节点。ResourceFlavors 可以用来表示这些资源,并且可以在具有配额的 ClusterQueue 中引用来控制资源限制。有关更多详细信息,请参阅 Kueue 概念。
想要了解如何使用 GKE 实现作业队列系统、配置工作负载资源以及不同命名空间之间的配额共享?请参阅教程。
针对成本进行优化的可靠工作负载
对计算和存储平台资源的有效利用是至关重要的。为了帮助您降低成本并调整计算实例的大小,以满足您的批处理需求,同时又不牺牲性能,您的 GKE 批处理工作负载可以通过永久性卷利用 Compute Engine 永久性磁盘,为您的工作负载提供持久存储。要详细了解从存储到网络配置等优化工作负载的方法,请参阅
可观测性
GKE 与 Google Cloud 的运维套件集成;您可以控制将哪些日志和哪些指标(如果有的话)从 GKE 集群发送到 Cloud Logging 和 Cloud Monitoring。对于批处理用户来说,这意味着能够从其工作负载 Pod 访问详细且最新的日志,并能够使用 Prometheus 等监控系统灵活地编写自己的工作负载特定指标。GKE 还支持 Prometheus 托管服务,以实现由 Google 的全球规模 Monarch 时序数据库支持的零麻烦指标收集。我们建议您使用托管集合;使用它消除了设置和维护 Prometheus 服务器的复杂性。要了解更多信息,请参阅批量平台监控。
结论
GKE 提供了一个可扩展、具有弹性、安全且经济高效的平台,用于运行容器化批处理工作负载,同时提供不干涉的 Autopilot 体验和高度可定制的标准模式,可以指定该模式以满足组织的需求。GKE 与 Google Cloud 服务深度集成,可以访问所有 Compute Engine 虚拟机系列、CPU 和加速器架构以及 Kueue 的 Kubernetes 原生作业队列功能,随时可以成为批处理工作负载的新家。它使您能够运维大型计算平台,通过成本优化来简化多租户、规模和性能。
有关如何设计和实施批处理平台的更多详细信息,请参阅在 GKE 上运行批处理工作负载的最佳实践 | Google Kubernetes Engine(GKE)
如需了解如何使用 GKE 实现作业队列系统、配置工作负载资源以及不同命名空间之间的配额共享?请参阅本教程。
文章信息
相关推荐
