本指南介绍了如何使用动态预配在 GKE 中创建由 Parallelstore CSI 驱动程序支持的新 Kubernetes 卷。这样,您就可以按需创建由全托管式 Parallelstore 实例提供支持的存储,并将其用作有状态工作负载的卷。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 查看 CSI 驱动程序概览,了解限制和要求。
- 配置 VPC 网络。
- 如果您想使用 GKE Standard 集群,请务必启用 CSI 驱动程序。
使用 Parallelstore CSI 驱动程序创建新卷
以下几个部分介绍了在 GKE 中创建 Parallelstore CSI 驱动程序支持的 Kubernetes 卷的典型过程:
(可选)创建存储类
启用 Parallelstore CSI 驱动程序后,GKE 会自动创建一个名为 parallelstore-rwx
的 StorageClass,以便预配 Parallelstore 实例。此 StorageClass 会指示 CSI 驱动程序在与 GKE 集群相同的区域中预配 Parallelstore 实例,以确保获得最佳 I/O 性能。
您可以选择使用特定拓扑创建自定义 StorageClass。请按以下步骤操作:
将以下 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 参考文档。
运行以下命令以创建 StorageClass:
kubectl create -f parallelstore-class.yaml
使用 PersistentVolumeClaim 访问卷
您可以创建一个引用 Parallelstore CSI 驱动程序的 StorageClass 的 PersistentVolumeClaim 资源。
以下清单文件展示了如何在 ReadWriteMany
访问模式中创建引用您之前创建的 StorageClass 的 PersistentVolumeClaim 的示例。
将以下清单保存在名为
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 为增量)。运行以下命令以创建 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 资源。
将以下清单保存在名为
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 会等到 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 模型。