图 1. Kubernetes 上的有状态工作负载呈指数级增长(以 Google Kubernetes Engine 为例)
1、可扩展性和灵活性
大规模人工智能的计算以 petaFlops 为单位。客户利用 Kubernetes 的规模来运行大型超级计算机。例如,PGS 将其 Cray 替换为基于 GKE 的超级计算机,处理能力为 72.02 petaFLOPS。这相当于世界第七大计算机。
随着大规模计算的出现,需要可扩展的存储。Kubernetes 的灵活性导致了通过容器存储接口 (CSI) 进行存储集成,这为客户提供了广泛的存储选项来访问其数据。
对块和文件存储的支持已经存在一段时间了;最近,新的基于对象存储的 Fuse CSI 驱动程序被证明是与有状态应用程序的流行的新集成。这种需求是由需要高吞吐量和低成本存储的 AI/ML 和数据分析应用程序驱动的。添加 Fuse 层有助于提高可移植性,因为数据科学家在访问对象存储上的数据时可以简单地使用文件语义,而不是使用特定于云提供商的 SDK。
图 2. GCS Fuse CSI 允许 Pytorch 和 Tensorflow 上的 AI/ML 应用程序通过文件语义访问对象存储中的数据
2、韧性
Kubernetes 提供了高度的弹性,可以自动从故障场景中恢复。Kubernetes 可以自动修复,包括自动重新启动失败的容器,它还可以将数据工作负载分布在多个节点上,以提高性能和可用性。例如,您可以使用分散策略跨区域放置副本、设置负载平衡、无缝附加持久卷以及安排备份。您还可以使用 Terraform 等基础设施即代码 (IaC) 工具使其成为可重复的模式。
Kubernetes 进行频繁的更新,这可以被视为对有状态应用程序的破坏。然而,凭借 Pod 中断预算、维护窗口和蓝绿部署,Kubernetes 拥有优雅地管理升级所需的所有自动化功能,使组织能够实现在现代基础设施上运行的好处。
图 3.部署在 HA 中的 Kubernetes 上的 Kafka 架构
3、开放性
Kubernetes 是一个社区主导的项目和完全开源的工具(曾经是有史以来增长最快的开源软件),这意味着存在一个由其他开源工具组成的庞大生态系统,旨在与它一起使用。还有丰富的工具和服务生态系统可帮助您管理数据工作负载。您可以使用 Spark、Airflow 和 Kafka 等 Kubernetes 运算符,它们有 OSS 和企业版本。然后还有现代数据工程 OSS 工具,如Airbyte、Feast和矢量数据库(如 Weaviate 和Qdrant),支持容器和 kubernetes 进行自我管理的计算部署。
4、 费用
Kubernetes 允许细粒度的装箱和正确调整资源大小。这为数据应用带来了一定程度的成本优化,而这在传统的虚拟机领域是看不到的。GKE 等托管 Kubernetes 产品现在可为您提供开箱即用的建议,帮助您做出正确调整工作负载大小和提高效率的决策。