本指南介绍了如何使用 GKE Parallelstore CSI 驱动程序通过静态预配连接到现有的 Parallelstore 实例。这样,您就能够以受控且可预测的方式访问现有的全托管式 Parallelstore 实例,将其用作有状态工作负载的卷。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 查看 CSI 驱动程序概览,了解限制和要求。
- 创建 Parallelstore 实例(如果您尚未这样做)。
- 配置 VPC 网络。
- 如果您想使用 GKE Standard 集群,请务必启用 CSI 驱动程序。
使用 Parallelstore CSI 驱动程序访问现有 Parallelstore 实例
如果您已在与 GKE 集群相同的网络中预配 Parallelstore 实例,则可以按照相关说明静态预配引用实例的 PersistentVolume。
以下部分介绍了使用 Parallelstore CSI 驱动程序访问现有 Parallelstore 实例的典型过程:
- 创建引用 Parallelstore 实例的 PersistentVolume。
- 使用 PersistentVolumeClaim 访问该卷。
- (可选)为 Sidecar 容器配置资源。
- 创建使用该卷的工作负载。
创建一个 PersistentVolume
本部分展示了如何创建引用现有 Parallelstore 实例的 PersistentVolume 的示例。
运行以下命令以找到 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
将以下清单保存在名为
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 参考文档。
运行以下命令以创建 PersistentVolume:
kubectl apply -f parallelstore-pv.yaml
使用 PersistentVolumeClaim 访问卷
您可以创建一个引用 Parallelstore CSI 驱动程序的 StorageClass 的 PersistentVolumeClaim 资源。
以下清单文件展示了如何在 ReadWriteMany
访问模式中创建引用您之前创建的 StorageClass 的 PersistentVolumeClaim 的示例。
将以下清单保存在名为
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 中的规范匹配。
运行以下命令以创建 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 资源。
将以下清单保存在名为
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
运行以下命令以将该清单应用于集群:
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 文档中的问题排查页面。
后续步骤
- 浏览 Parallelstore CSI 参考文档。
- 了解如何使用 Parallelstore 拦截库来提高工作负载性能。
- 了解如何将数据从 Cloud Storage 转移到 Parallelstore。
- 试用教程以在 GKE 上使用 Keras 训练 TensorFlow 模型。