本概览介绍了 Cloud Storage FUSE CSI 驱动程序,此驱动程序用于将 Cloud Storage 存储桶装载为 Google Kubernetes Engine (GKE) 中的本地文件系统。此功能对于需要将训练数据、模型和检查点存储在 Cloud Storage 中的机器学习工作负载特别有用。
本概览适用于希望通过其 Kubernetes 应用在 Cloud Storage 中访问或存储训练数据、推理模型权重和检查点的开发者与数据科学家。
在阅读本页面内容之前,请确保您熟悉 Kubernetes、GKE 和 Cloud Storage。
工作原理
该驱动程序使用容器存储接口 (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 存储桶装载为文件系统,以便应用可以舍弃使用云端专用 API,而是使用常用的文件 I/O 操作(例如打开、读取、写入和关闭)来访问存储桶内的对象。
驱动程序原生支持使用以下方法来配置 Cloud Storage 支持的卷:
- CSI 临时卷:您可以根据 Pod 规范指定 Cloud Storage 存储桶。如果您希望无需先前用过 Kubernetes 永久性卷便可使用基于 Pod 的简化界面,请使用临时 CSI 卷。如需使用此选项,请参阅将 Cloud Storage 存储桶装载为 CSI 临时卷。
- PersistentVolumes:您可以使用静态预配创建引用 Cloud Storage 存储桶的 PersistentVolume 资源。然后,您的 Pod 可以引用绑定到此 PersistentVolume 的 PersistentVolumeClaim。如果您已经熟悉 PersistentVolume,并且希望与依赖此资源类型的现有部署保持一致,请使用此选项。如需使用此选项,请参阅将 Cloud Storage 存储桶装载为永久性卷。
使用场景
Cloud Storage FUSE CSI 驱动程序适用于以下场景:
AI 和机器学习
- 训练:您可以使用 Cloud Storage 作为可信来源,通过 Cloud Storage FUSE CSI 驱动程序读取训练数据和检查点保存模型。例如,在使用 PyTorch、JAX 或 TensorFlow 在 GKE 上训练模型时,该驱动程序可以授权访问 Cloud Storage 存储桶中存储的训练数据集。
- 推理:您可以提供机器学习推理模型,以便根据 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 驱动程序在 Standard 和 Autopilot 集群上均可自动部署和管理驱动程序。使用 CSI 临时卷可简化卷配置和管理。这是因为您无需 PersistentVolumeClaim 和 PersistentVolume 对象。
- 安全性:Cloud Storage FUSE CSI 驱动程序不需要特权访问权限。这样可以最大限度地降低与特权访问权限相关的风险,并改善安全状况。您可以使用 Workload Identity Federation for GKE 管理身份验证,同时精细控制 Pod 访问 Cloud Storage 对象的方式。
- 性能:Cloud Storage FUSE CSI 驱动程序通过各种功能来提升性能,例如用于优化互动的边车、用于加快数据访问的并行下载,以及用于提高读取性能和缩短延迟时间的元数据和文件缓存。如需详细了解这些功能,请参阅性能调优选项和功能。
- 可移植性和灵活性:借助 Cloud Storage FUSE CSI 驱动程序,您可以使用标准文件系统语义来装载和访问 Cloud Storage 存储桶。这可提供一个熟悉的界面,以提高机器学习工作负载的可移植性,同时免去了大量的代码或应用更改工作。GKE 上提供的所有加速器(包括 GPU 和 TPU)都支持该驱动程序。Cloud Storage FUSE CSI 驱动程序支持
ReadWriteMany
、ReadOnlyMany
和ReadWriteOnce
访问模式。您可以在 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 磁盘。
如需了解性能调优最佳实践,请参阅优化适用于 GKE 的 Cloud Storage FUSE CSI 驱动程序的性能。
限制
CSI 驱动程序具有以下限制:
- 与 POSIX 文件系统相比,Cloud Storage FUSE 文件系统在性能、可用性、访问权限授权和语义方面存在差异。
- GKE Sandbox 不支持 Cloud Storage FUSE CSI 驱动程序。
- Cloud Storage FUSE CSI 驱动程序不支持卷快照、卷克隆或卷扩展。
- 由于 Workload Identity Federation for GKE 的限制,Cloud Storage FUSE CSI 驱动程序不支持在主机网络 (
hostNetwork: true
) 上运行的 Pod。 - 使用 Workload Identity Federation for GKE 时,需要为读写工作负载提供统一的存储桶级访问权限。
- 请参阅 Cloud Storage FUSE CSI 驱动程序的 GitHub 项目中的已知问题。
- 请参阅 Cloud Storage FUSE CSI 驱动程序的 GitHub 项目中的待解决的问题。
要求
如需使用 Cloud Storage FUSE CSI 驱动程序,您的集群必须满足以下 GKE 版本要求:
- 使用运行 GKE 1.24 版或更高版本的 Linux 集群。
- 已启用 Workload Identity Federation for GKE 和 GKE 元数据服务器。
- 使用最新版本的 Google Cloud CLI。
如需使用 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.32.0-gke.1538000 或更高版本。 |
配置内核预读 | 1.32.1-gke.1200000 或更高版本。 |