在 Google Kubernetes Engine 中创建和使用由 Parallelstore 实例提供支持的卷


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

本指南介绍了如何使用动态预配在 GKE 中创建由 Parallelstore CSI 驱动程序支持的新 Kubernetes 。这样,您就可以按需创建由全托管式 Parallelstore 实例提供支持的存储,并将其用作有状态工作负载的卷。

准备工作

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

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

使用 Parallelstore CSI 驱动程序创建新卷

以下几个部分介绍了在 GKE 中创建 Parallelstore CSI 驱动程序支持的 Kubernetes 卷的典型过程:

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

(可选)创建存储类

启用 Parallelstore CSI 驱动程序后,GKE 会自动创建一个名为 parallelstore-rwx 的 StorageClass,以便预配 Parallelstore 实例。此 StorageClass 会指示 CSI 驱动程序在与 GKE 集群相同的区域中预配 Parallelstore 实例,以确保获得最佳 I/O 性能。

您可以选择使用特定拓扑创建自定义 StorageClass。请按以下步骤操作:

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

      apiVersion: storage.k8s.io/v1
      kind: StorageClass
      metadata:
        name: parallelstore-class
      provisioner: parallelstore.csi.storage.gke.io
      volumeBindingMode: Immediate
      reclaimPolicy: Delete
      allowedTopologies:
      - matchLabelExpressions:
        - key: topology.gke.io/zone
          values:
            LOCATION
    

    替换以下内容:

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

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

  2. 运行以下命令以创建 StorageClass:

    kubectl create -f parallelstore-class.yaml
    

使用 PersistentVolumeClaim 访问卷

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

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

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

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

    STORAGE_SIZE 替换为存储空间大小,例如 12000Gi。该值必须介于 12,000 GiB 到 100,000 GiB 之间(以 4,000 GiB 为增量)。

  2. 运行以下命令以创建 PersistentVolumeClaim:

      kubectl create -f parallelstore-pvc.yaml
    

(可选)为边车容器配置资源

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

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

默认情况下,GKE 会使用以下资源请求配置边车容器,并且未设置资源限制:

  • 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

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

  • 如果一个请求或限制值已设置,而另一个未设置,它们都将设置为相同的指定值。
  • 如果您的工作负载需要更高的吞吐量,请为边车容器分配更多 CPU。CPU 不足会导致 I/O 节流。
  • 您可以使用值“0”取消设置 Standard 集群上的任何资源限制;例如,gke-parallelstore/memory-limit: "0" 会移除边车容器的内存限制。如果您无法确定 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 会等到 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 文档中的问题排查页面。

后续步骤