适用于 GKE 的 Cloud Storage FUSE CSI 驱动程序简介


本概览介绍了 Cloud Storage FUSE CSI 驱动程序,用于在 Google Kubernetes Engine (GKE) 中将 Cloud Storage 存储分区装载为本地文件系统。对于需要将训练数据、模型和检查点存储在 Cloud Storage 中的机器学习工作负载,此功能尤为有用。

本概览适用于希望通过 Kubernetes 应用访问或存储在 Cloud Storage 中训练数据、推理模型权重和检查点的开发者和数据科学家。

在阅读本页内容之前,请确保您熟悉 Kubernetes、GKE 和 Cloud Storage。

工作原理

该驱动程序使用 Container Storage Interface (CSI) 标准,让在 pod 中运行的应用能够像访问已装载的文件系统一样无缝访问 Cloud Storage 存储分区。这意味着,您可以将 Cloud Storage 存储分区视为 Kubernetes 应用的持久且可伸缩的数据源,而无需进行复杂的配置或代码更改。

Cloud Storage FUSE CSI 驱动程序提供由开源 Google Cloud Storage FUSE CSI 插件提供支持的全代管式体验。借助 CSI 驱动程序,您可以使用 Kubernetes API 将原有 Cloud Storage 存储分区作为卷使用。您的应用可以使用 Cloud Storage FUSE 文件系统语义上传和下载对象。

用户空间中的文件系统 (FUSE) 是一个接口,用于将文件系统导出到 Linux 内核。借助 Cloud Storage FUSE,您可以将 Cloud Storage 存储桶作为文件系统装载,以便应用可以使用常用的文件 I/O 操作(例如打开、读取、写入和关闭)访问存储分区内的对象,而非使用云端专用 API。

该驱动程序原生支持以下方式来配置由 Cloud Storage 支持的卷:

  • CSI 临时卷:您可以在 Pod 规范中内嵌指定 Cloud Storage 存储桶。如果您希望使用简化的基于 Pod 的界面,而无需具备任何 Kubernetes 永久性卷的使用经验,请使用临时 CSI 卷。如需使用此选项,请参阅将 Cloud Storage 存储分区作为 CSI 临时卷进行装载
  • PersistentVolumes:您将使用静态预配创建引用 Cloud Storage 存储桶的 PersistentVolume 资源。然后,您的 Pod 可以引用绑定到此 PersistentVolume 的 PersistentVolumeClaim。如果您已经熟悉 PersistentVolume,并且希望与依赖此资源类型的现有部署保持一致,请使用此选项。如需使用此选项,请参阅将 Cloud Storage 存储分区作为永久卷进行挂载

使用场景

Cloud Storage FUSE CSI 驱动程序适用于以下场景:

AI 和机器学习

  • 训练:您可以使用 Cloud Storage FUSE CSI 驱动程序读取训练数据,并使用 Cloud Storage 作为真相来源来检查点保存的模型。例如,使用 PyTorch、JAX 或 TensorFlow 在 GKE 上训练模型时,驱动程序可以提供对存储在 Cloud Storage 存储分区中训练数据集的访问权限。
  • 推理:您可以提供 ML 推理模型,以便从存储在 Cloud Storage 中的文件推理结果。您可以使用 Cloud Storage FUSE CSI 预加载存储在 Cloud Storage 中的模型权重。此外,您还可以使用并行下载功能加快从 Cloud Storage 读取大型文件的速度,以实现多线程下载。您可以使用此功能缩短模型加载时间,尤其是对于大小超过 1 GB 的读取

数据分析流水线

您可以使用 Cloud Storage FUSE CSI 驱动程序,让应用直接访问和分析存储在 Cloud Storage 中的大型数据集,从而简化数据处理任务。例如,在 GKE 上运行的 Spark 作业可以使用 CSI 驱动程序处理存储在 Cloud Storage 中的数据,而无需先下载这些数据。

优势

使用 CSI 驱动程序可为您带来以下好处:

  • 易于设置:Cloud Storage FUSE CSI 驱动程序会在标准集群和 Autopilot 集群上自动部署和管理该驱动程序。使用 CSI 临时卷可简化卷配置和管理。这是因为不需要 PersistentVolumeClaim 和 PersistentVolume 对象。
  • 安全:Cloud Storage FUSE CSI 驱动程序不需要特权访问权限。这样可以最大限度地降低与特权访问权限相关的风险,并改善安全状况。您可以使用适用于 GKE 的工作负载身份联合管理身份验证,从而精细控制 Pod 访问 Cloud Storage 对象的方式。
  • 性能:Cloud Storage FUSE CSI 驱动程序通过边车(用于优化互动)、并行下载(用于更快地访问数据)以及元数据和文件缓存等功能来提升性能,从而提高读取性能并缩短延迟时间。如需详细了解这些功能,请参阅性能调优选项和功能
  • 可移植性和灵活性:借助 Cloud Storage FUSE CSI 驱动程序,您可以使用标准文件系统语义来挂载和访问 Cloud Storage 存储分区。这提供了一个熟悉的界面,可提高机器学习工作负载的可移植性,让您无需进行大量的代码或应用更改。GKE 上提供的所有加速器(包括 GPU 和 TPU)都支持该驱动程序。Cloud Storage FUSE CSI 驱动程序支持 ReadWriteManyReadOnlyManyReadWriteOnce 访问模式。您可以在 init 容器中使用 Cloud Storage FUSE 卷。
  • 可管理性:借助该驱动程序,您可以在后台运行 Cloud Storage FUSE,而无需安装或管理它。您还可以查看 Cloud Storage FUSE 的指标分析,包括文件系统、Cloud Storage 和文件缓存用量。

性能调优选项和功能

Cloud Storage FUSE CSI 驱动程序附带多种性能调优选项和功能,可用于优化 Pod 访问 Cloud Storage 存储分区中存储的数据的方式。

例如,通过启用文件缓存并调整请求并发性,您可以显著缩短加载训练数据所需的时间,从而缩短训练时间。

  • 原生侧车:Cloud Storage FUSE CSI 驱动程序会在 Pod 中附加一个侧车容器,以管理与 Cloud Storage 的互动。该侧边栏会处理挂载和与 Cloud Storage 的互动,让您的应用能够无缝访问数据。您可以通过为边车容器配置 CPU 和内存等资源,或调整与缓存和缓冲相关的设置,来微调性能。Cloud Storage FUSE CSI 驱动程序边车容器和 Istio 可以在 Pod 中共存并并行运行。

  • 并行下载:从启用了文件缓存的 GKE 版本 1.30.3-gke.1571000 和 Cloud Storage FUSE v.2.4.0 开始,您可以使用并行下载功能加快从 Cloud Storage 读取大型文件的速度,以实现多线程下载。您可以使用此功能缩短模型加载时间,尤其是对于大小超过 1 GB 的读取(例如,加载 Llama 2 70B 时速度最高可提高 2 倍)。

  • 元数据缓存支持:Cloud Storage FUSE CSI 驱动程序通过缓存文件元数据(例如大小和修改时间)来提升性能。CSI 驱动程序默认启用此统计信息缓存,并通过在本地存储信息(而不是反复从 Cloud Storage 请求信息)来缩短延迟时间。您可以配置其大小上限以及数据在缓存中停留的时长。通过微调元数据缓存,您可以减少对 Google Cloud Storage 的 API 调用,从而最大限度地减少网络流量和延迟时间,进而提高应用性能和效率。

  • 文件缓存支持:您可以将 Cloud Storage FUSE CSI 驱动程序与文件缓存搭配使用,以提高处理 Cloud Storage 存储分区中小文件的应用的读取性能。Cloud Storage FUSE 文件缓存功能是一种基于客户端的读取缓存,可让您从所选的缓存存储空间中更快地传送重复文件读取。您可以根据自己的性价比需求,为读取缓存选择各种存储选项,包括本地 SSD、基于 Persistent Disk 的存储空间和 RAM 磁盘。

如需了解性能调优最佳实践,请参阅优化 Cloud Storage FUSE CSI 驱动程序以提升 GKE 性能

限制

CSI 驱动程序存在以下限制:

使用要求

如需使用 Cloud Storage FUSE CSI 驱动程序,您的集群必须满足以下 GKE 版本要求:

如需使用 Cloud Storage FUSE CSI 驱动程序的特定功能,您还需要满足以下要求:

功能 GKE 版本要求
边车容器的私有映像、自定义写入缓冲区卷和边车容器资源请求 1.27.10-gke.1055000、1.28.6-gke.1369000、1.29.1-gke.1575000 或更高版本。
文件缓存、卷属性 1.27.12-gke.1190000、1.28.8-gke.1175000、1.29.3-gke.1093000 或更高版本。
init 容器中的 Cloud Storage FUSE 卷 1.29.3-gke.1093000 或更高版本,且所有节点均搭载 GKE 1.29 或更高版本。
并行下载 1.29.6-gke.1254000、1.30.2-gke.1394000 或更高版本。
Cloud Storage FUSE 指标 1.31.1-gke.1621000 或更高版本。
元数据预提取 1.31.3-gke.1162000 或更高版本。

后续步骤