为 GKE 配置 Cloud Storage FUSE CSI 驱动程序边车容器


本指南介绍了如何为 Cloud Storage FUSE CSI 驱动程序边车容器配置资源,包括设置私有映像、自定义写入缓冲区和自定义读取缓存卷。通常,您无需更改这些设置。

Cloud Storage FUSE CSI 驱动程序使用可自定义的边车容器来高效地装载和访问 Cloud Storage 存储分区。通过配置边车,您可以微调应用性能和资源使用情况,从而加快数据访问速度、缩短处理时间,并可能降低应用的总体资源消耗。

本指南适用于希望优化与 GKE 交互的应用的性能、安全性和效率的开发者、管理员和架构师。

在阅读本页内容之前,请确保您熟悉 Cloud Storage、Kubernetes 和容器化概念的基础知识。

边车容器的运作方式

Cloud Storage FUSE CSI 驱动程序使用边车容器来挂载 Cloud Storage 存储分区,以便 Kubernetes 应用能够将其作为本地文件系统访问。此边车容器名为 gke-gcsfuse-sidecar,与工作负载容器一起在同一 Pod 中运行。当驱动程序在 Pod 规范中检测到 gke-gcsfuse/volumes: "true" 注解时,会自动注入边车容器。这种 Sidecar 容器方法有助于确保安全性并有效管理资源。

边车容器会处理装载 Cloud Storage 存储分区的复杂性,并为应用提供文件系统访问权限,而无需您直接管理 Cloud Storage FUSE 运行时。您可以使用 gke-gcsfuse/cpu-limitgke-gcsfuse/memory-limit 等注解为 Sidecar 容器配置资源限制。边车容器模型还可确保 Cloud Storage FUSE 实例与工作负载生命周期相关联,从而防止其不必要地消耗资源。这意味着,边车容器会在工作负载容器退出时自动终止,尤其是在 RestartPolicyNever 的作业工作负载或 Pod 中。

Istio 兼容性

Cloud Storage FUSE CSI 驱动程序的边车容器和 Istio 可以在 Pod 中共存并并行运行。Istio 的边车代理会管理网络流量,而 CSI 边车会优化存储访问,让您的应用能够高效地与 Google Cloud Storage 交互,并提升性能和可观测性。

配置自定义写入缓冲区

Cloud Storage FUSE 会将写入暂存到本地目录中,然后在执行 closefsync 操作时上传到 Cloud Storage。写入缓冲默认处于停用状态。

本部分介绍如何为 Cloud Storage FUSE 写入缓冲配置自定义缓冲区卷。如果您需要替换 Cloud Storage FUSE 的默认 emptyDir 卷以在写入操作中暂存文件,则此情况可能适用。如果您需要在 Autopilot 集群上写入大于 10 GiB 的文件,这将非常有用。

您可以指定 Cloud Storage FUSE CSI 驱动程序支持的任何类型的存储空间来进行文件缓存,例如本地 SSD、基于 Persistent Disk 的存储空间和 RAM 磁盘(内存)。GKE 将使用指定的卷进行文件写入缓冲。如需详细了解这些选项,请参阅选择用于支持文件缓存的存储空间

如需使用自定义缓冲区卷,您必须指定非零 fsGroup

以下示例展示了如何将预定义的 PersistentVolumeClaim 用作缓冲区卷:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-gcsfuse/volumes: "true"
spec:
  securityContext:
    fsGroup: FS_GROUP
  containers:
  ...
  volumes:
  - name: gke-gcsfuse-buffer
    persistentVolumeClaim:
      claimName: BUFFER_VOLUME_PVC

替换以下内容:

  • FS_GROUP:fsGroup ID。
  • BUFFER_VOLUME_PVC:预定义的 PVC 的名称。

配置自定义读取缓存卷

本部分介绍如何为 Cloud Storage FUSE 读取缓存配置自定义缓存卷。

如果您需要替换 Cloud Storage FUSE 的默认 emptyDir 卷以在读取操作中缓存文件,则此情况可能适用。您可以指定 GKE 支持的任何类型的存储空间(例如 PersistentVolumeClaim),GKE 将使用指定的卷进行文件缓存。如果您需要在 Autopilot 集群上缓存大于 10 GiB 的文件,这将非常有用。如需使用自定义缓存卷,您必须指定非零 fsGroup

以下示例展示了如何将预定义的 PersistentVolumeClaim 用作缓存卷:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-gcsfuse/volumes: "true"
spec:
  securityContext:
    fsGroup: FS_GROUP
  containers:
  ...
  volumes:
  - name: gke-gcsfuse-cache
    persistentVolumeClaim:
      claimName: CACHE_VOLUME_PVC

替换以下内容:

  • FS_GROUPfsGroup ID。
  • CACHE_VOLUME_PVC:预定义的 PersistentVolumeClaim 名称。

为边车容器配置私有映像

本部分介绍在您将边车容器映像托管在私有容器仓库中的情况下如何使用边车容器映像。如果您出于安全目的需要使用专用节点,则此场景可能适用。

如需配置和使用私有边车容器映像,请按照以下步骤操作:

  1. 请参阅此 GKE 兼容性表,查找兼容的公共边车容器映像。
  2. 将其拉取到本地环境,并推送到您的私有容器仓库。
  3. 在清单中,指定一个名为 gke-gcsfuse-sidecar 的容器,并使其仅有 image 字段。GKE 将使用指定的边车容器映像来准备边车容器注入。

    示例如下:

    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        gke-gcsfuse/volumes: "true"
    spec:
      containers:
      - name: gke-gcsfuse-sidecar
        image: PRIVATE_REGISTRY/gcs-fuse-csi-driver-sidecar-mounter:PRIVATE_IMAGE_TAG
      - name: main # your main workload container.
    

    替换以下内容:

    • PRIVATE_REGISTRY:您的私有容器仓库。
    • PRIVATE_IMAGE_TAG:您的私有边车容器映像标记。

后续步骤