使用 GKE Parallelstore CSI 驱动程序访问现有的 Parallelstore 实例


Parallelstore 仅限受邀者使用。如果您想在 Google Cloud 项目中申请访问 Parallelstore,请与您的销售代表联系。

本指南介绍了如何使用 GKE Parallelstore CSI 驱动程序通过静态预配连接到现有的 Parallelstore 实例。这样,您就能够以受控且可预测的方式访问现有的全托管式 Parallelstore 实例,将其用作有状态工作负载的卷。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

使用 Parallelstore CSI 驱动程序访问现有 Parallelstore 实例

如果您已在与 GKE 集群相同的网络中预配 Parallelstore 实例,则可以按照相关说明静态预配引用实例的 PersistentVolume。

以下部分介绍了使用 Parallelstore CSI 驱动程序访问现有 Parallelstore 实例的典型过程:

  1. 创建引用 Parallelstore 实例的 PersistentVolume
  2. 使用 PersistentVolumeClaim 访问该卷
  3. (可选)为 Sidecar 容器配置资源
  4. 创建使用该卷的工作负载

创建一个 PersistentVolume

本部分展示了如何创建引用现有 Parallelstore 实例的 PersistentVolume 的示例。

  1. 运行以下命令以找到 Parallelstore 实例。

    gcloud beta parallelstore instances list \
        --project=PROJECT_ID \
        --location=LOCATION
    

    替换以下内容:

    • PROJECT_ID:Google Cloud 项目 ID。
    • LOCATION:包含该集群的 Compute Engine 可用区。您必须为 Parallelstore CSI 驱动程序指定支持的可用区

    输出应如下所示。请务必记下 Parallelstore 实例名称IP 访问点,然后再继续执行下一步。

    NAME                                                                                                     capacity  DESCRIPTION  CREATE_TIME                     UPDATE_TIME                     STATE   network  RESERVED_IP_RANGE  ACCESS_POINTS
    projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563  12000                  2024-03-06T19:18:26.036463730Z  2024-03-06T19:24:44.561441556Z  ACTIVE                              10.51.110.2,10.51.110.4,10.51.110.3
    
  2. 将以下清单保存在名为 parallelstore-pv.yaml 的文件中:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: parallelstore-pv
    spec:
      storageClassName: "STORAGECLASS_NAME"
      capacity:
        storage: STORAGE_SIZE
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      csi:
        driver: parallelstore.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container"
        volumeAttributes:
          accessPoints: ACCESS_POINTS
          network: NETWORK_NAME
    

    替换以下内容:

    • PROJECT_ID:Google Cloud 项目 ID
    • LOCATION:Parallelstore 实例的可用区级位置。您必须为 Parallelstore CSI 驱动程序指定支持的可用区
    • INSTANCE_NAME:Parallelstore 实例的名称。有效的 volumeHandle 值示例为 "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
    • ACCESS_POINTS:Parallelstore 实例的访问点;例如 10.51.110.2,10.51.110.4,10.51.110.3
    • NETWORK_NAME:可在其中访问 Parallelstore 实例的 VPC 网络。
    • STORAGECLASS_NAME:StorageClass 的名称。此字段可以是空字符串,但必须与 PersistentVolumeClaim 中的规范匹配。
    • STORAGE_SIZE:存储空间大小,例如 12000Gi

    如需查看 PersistentVolume 对象中支持的字段的完整列表,请参阅 Parallelstore CSI 参考文档

  3. 运行以下命令以创建 PersistentVolume:

    kubectl apply -f parallelstore-pv.yaml
    

使用 PersistentVolumeClaim 访问卷

您可以创建一个引用 Parallelstore CSI 驱动程序的 StorageClass 的 PersistentVolumeClaim 资源。

以下清单文件展示了如何在 ReadWriteMany 访问模式中创建引用您之前创建的 StorageClass 的 PersistentVolumeClaim 的示例。

  1. 将以下清单保存在名为 parallelstore-pvc.yaml 的文件中:

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: parallelstore-pvc
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: STORAGECLASS_NAME
        volumeName: parallelstore-pv
        resources:
          requests:
            storage: STORAGE_SIZE
    

    替换以下内容:

    • STORAGECLASS_NAME:StorageClass 的名称。它必须与 PersistentVolume 中的规范匹配。
    • STORAGE_SIZE:存储空间大小;例如 12000Gi。它必须与 PersistentVolume 中的规范匹配。
  2. 运行以下命令以创建 PersistentVolumeClaim:

      kubectl create -f parallelstore-pvc.yaml
    

(可选)为 Sidecar 容器配置资源

当您创建使用 Parallelstore 支持的卷的工作负载 Pod 时,CSI 驱动程序会确定卷是否基于 Parallelstore 实例。

如果驱动程序检测到卷基于 Parallelstore,或者您指定了注解 gke-parallelstore/volumes: "true",则 CSI 驱动程序会自动将名为 gke-parallelstore-sidecar 的 Sidecar 容器注入 Pod。此 Sidecar 容器会将 Parallelstore 实例装载到工作负载。

默认情况下,Sidecar 容器配置了以下资源请求,并且未设置资源限制:

  • 250 m CPU
  • 512 MiB 内存
  • 10 MiB 临时存储空间

如需覆盖这些值,您可以选择指定注解 gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request],如以下示例所示:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-parallelstore/volumes: "true"
    gke-parallelstore/cpu-request: 500m
    gke-parallelstore/memory-request: 1Gi
    gke-parallelstore/ephemeral-storage-request: 500Mi
    gke-parallelstore/cpu-limit: 1000m
    gke-parallelstore/memory-limit: 2Gi
    gke-parallelstore/ephemeral-storage-limit: 1Gi

在决定要分配的资源量时,请考虑以下事项:

  • 如果一个请求或限制值已设置,而另一个未设置,GKE 会将它们都设置为相同的指定值。
  • 如果您的工作负载需要更高的吞吐量,请为边车容器分配更多 CPU。CPU 不足会导致 I/O 节流。
  • 您可以使用值“0”取消设置 Standard 集群上的任何资源限制;例如,gke-parallelstore/memory-limit: "0" 会移除 Sidecar 容器的内存限制。如果您无法确定 gke-parallelstore-sidecar 为支持您的工作负载而需要的资源量,并且希望允许 Sidecar 使用节点上的所有可用资源,这会非常有用。

创建使用该卷的工作负载

本部分展示了如何创建使用您之前创建的 PersistentVolumeClaim 资源的 Pod 的示例。

多个 Pod 可以共享同一 PersistentVolumeClaim 资源。

  1. 将以下清单保存在名为 my-pod.yaml 的文件中:

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
      spec:
        containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - name: parallelstore-volume
              mountPath: /data
        volumes:
        - name: parallelstore-volume
          persistentVolumeClaim:
            claimName: parallelstore-pvc
    
  2. 运行以下命令以将该清单应用于集群:

      kubectl apply -f my-pod.yaml
    

    Pod 会等到 GKE 预配 PersistentVolumeClaim 后再开始运行。此操作可能需要几分钟才能完成。

管理 Parallelstore CSI 驱动程序

本部分介绍了如何启用和停用 Parallelstore CSI 驱动程序(如有需要)。

在新集群上启用 Parallelstore CSI 驱动程序

如需在创建新的 Standard 集群时启用 Parallelstore CSI 驱动程序,请使用 Google Cloud CLI 运行以下命令:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --network=NETWORK_NAME \
    --addons=ParallelstoreCsiDriver \
    --cluster-version=VERSION

替换以下内容:

  • CLUSTER_NAME:您的集群的名称。
  • LOCATION:包含该集群的 Compute Engine 可用区。您必须为 Parallelstore CSI 驱动程序指定支持的可用区
  • NETWORK_NAME:您在配置 VPC 网络中创建的 VPC 网络的名称。
  • VERSION:GKE 版本号。 您必须指定支持的版本号才能使用此功能,例如 GKE 1.29 版或更高版本。或者,您可以使用 --release-channel 标志并指定发布渠道

在现有集群上启用 Parallelstore CSI 驱动程序

如需在现有 GKE Standard 集群上启用该驱动程序,请使用 Google Cloud CLI 运行以下命令:

gcloud container clusters update CLUSTER_NAME \
  --location=LOCATION \
  --update-addons=ParallelstoreCsiDriver=ENABLED

替换以下内容:

  • CLUSTER_NAME:您的集群的名称。
  • LOCATION:包含该集群的 Compute Engine 可用区。您必须为 Parallelstore CSI 驱动程序指定支持的可用区

确保 GKE 集群在您在配置 VPC 网络中设置的同一 VPC 网络中运行。如需验证 GKE 集群的 VPC 网络,您可以在 Google Cloud 控制台中或通过命令 gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION) 进行检查。

停用 Parallelstore CSI 驱动程序

您可以使用 Google Cloud CLI 在现有 Autopilot 或 Standard 集群上停用 Parallelstore CSI 驱动程序。

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --update-addons=ParallelstoreCsiDriver=DISABLED

替换以下内容:

  • CLUSTER_NAME:您的集群的名称。
  • LOCATION:包含该集群的 Compute Engine 可用区。您必须为 Parallelstore CSI 驱动程序指定支持的可用区

将 fsGroup 与 Parallelstore 卷搭配使用

Parallelstore CSI 驱动程序支持更改已装载文件系统的根级目录的群组所有权,以匹配 Pod 的 SecurityContext 中指定的用户请求的 fsGroup。仅 GKE 集群 1.29.5 版或更高版本或 GKE 集群 1.30.1 版或更高版本支持此功能。

问题排查

如需获取问题排查指导,请参阅 Parallelstore 文档中的问题排查页面。

后续步骤