使用 Compute Engine 永久性磁盘 CSI 驱动程序

Google Kubernetes Engine (GKE) 为您在集群中自动部署和管理 Compute Engine 永久性磁盘容器存储接口 (CSI) 驱动程序提供了一种简单的方法。Compute Engine 永久性磁盘 CSI 驱动程序在 Autopilot 集群中始终处于启用状态,无法停用或修改。在 Standard 集群中,您必须启用 Compute Engine 永久性磁盘 CSI 驱动程序。

Compute Engine 永久性磁盘 CSI 驱动程序版本与 GKE 版本号相关联。Compute Engine 永久性磁盘 CSI 驱动程序版本通常是发布 GKE 版本时可用的最新驱动程序。当集群升级到最新的 GKE 补丁程序时,驱动程序会自动更新。

优势

使用 Compute Engine 永久性磁盘 CSI 驱动程序具有以下优势:

  • 它可以自动部署和管理永久性磁盘驱动程序,而不必手动进行设置。
  • 您可以使用客户管理的加密密钥 (CMEK)。这些密钥用于对加密您的数据的数据加密密钥进行加密。如需详细了解 GKE 上的 CMEK,请参阅使用 CMEK。
  • 您可以将卷快照与 Compute Engine 永久性磁盘 CSI 驱动程序结合使用。通过卷快照,您可以在特定时间点创建卷的副本。您可以使用此副本将卷恢复到之前的状态或预配新卷。
  • 您可以将卷克隆与运行 GKE 1.22 及更高版本的集群中的 Compute Engine 永久性磁盘 CSI 驱动程序结合使用。通过卷克隆,您可以在特定时间点创建卷的副本,并预配来源卷的所有数据。
  • Bug 修复和功能更新独立于次要的 Kubernetes 版本而发布。此发布时间表通常会加快发布节奏。

准备工作

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

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如需使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。如果您之前安装了 gcloud CLI,请通过运行 gcloud components update 命令来获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

启用 Compute Engine 永久性磁盘 CSI 驱动程序

如需在现有 Standard 集群中启用 Compute Engine 永久性磁盘 CSI 驱动程序,请使用 Google Cloud CLI 或 Google Cloud 控制台。

如需在现有集群上启用该驱动程序,请完成以下步骤:

gcloud

gcloud container clusters update CLUSTER-NAME \
   --update-addons=GcePersistentDiskCsiDriver=ENABLED

将 CLUSTER-NAME 替换为现有集群的名称。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 在功能下,点击 Compute Engine 永久性磁盘 CSI 驱动程序字段旁边的 修改 Compute Engine CSI 驱动程序。

  4. 选中启用 Compute Engine 永久性磁盘 CSI 驱动程序复选框。

  5. 点击保存更改。

启用 Compute Engine 永久性磁盘 CSI 驱动程序后,您可以使用驱动程序和预配工具名称 pd.csi.storage.gke.io 在 Kubernetes 卷中使用该驱动程序。

停用 Compute Engine 永久性磁盘 CSI 驱动程序

您可以使用 Google Cloud CLI 或 Google Cloud 控制台停用适用于 Standard 集群的 Compute Engine 永久性磁盘 CSI 驱动程序。

如果您停用该驱动程序,则当前使用该驱动程序所拥有的 PersistentVolume 的任何 Pod 都将无法终止。尝试使用这些 PersistentVolume 的所有新 Pod 也将无法启动。

如需在现有标准集群上停用该驱动程序,请完成以下步骤:

gcloud

gcloud container clusters update CLUSTER-NAME \
    --update-addons=GcePersistentDiskCsiDriver=DISABLED

将 CLUSTER-NAME 替换为现有集群的名称。

控制台

  1. 前往 Google Cloud 控制台中的 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 在集群列表中,点击您要修改的集群的名称。

  3. 在功能下,点击 Compute Engine 永久性磁盘 CSI 驱动程序字段旁边的 修改 Compute Engine CSI 驱动程序。

  4. 取消选中启用 Compute Engine Persistent Disk CSI 驱动程序复选框。

  5. 点击保存更改。

使用适用于 Linux 集群的 Compute Engine 永久性磁盘 CSI 驱动程序

以下几个部分介绍了在 GKE 中使用 CSI 驱动程序支持的 Kubernetes 卷的典型过程。这些部分针对使用 Linux 的集群。

创建一个 StorageClass

启用 Compute Engine 永久性磁盘 CSI 驱动程序后,GKE 会自动安装以下 StorageClass:

  • standard-rwo(使用平衡永久性磁盘)
  • premium-rwo(使用 SSD 永久性磁盘)

对于 Autopilot 集群,默认 StorageClass 是 standard-rwo,它使用 Compute Engine 永久性磁盘 CSI 驱动程序。对于标准集群,默认 StorageClass 使用 Kubernetes 树内 gcePersistentDisk 卷插件。

您可以通过运行以下命令找到已安装的 StorageClass 的名称:

kubectl get sc

您还可以通过在预配工具字段中添加 pd.csi.storage.gke.io 来安装其他使用 Compute Engine 永久性磁盘 CSI 驱动程序的 StorageClass。

例如,您可以使用以下名为 pd-example-class.yaml 的文件创建一个 StorageClass。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-example
provisioner: pd.csi.storage.gke.io
# Recommended setting. Delays the binding and provisioning of a PersistentVolume until a Pod that uses the
# PersistentVolumeClaim is created and scheduled on a node.
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-balanced

您可以在 type 参数中指定以下永久性磁盘类型:

  • pd-balanced
  • pd-ssd
  • pd-standard
  • pd-extreme(在 GKE 1.26 版及更高版本中受支持)

如果使用 pd-standard 或 pd-extreme,请参阅不支持的机器类型,了解其他使用限制。

使用 pd-extreme 选项时,您还必须将 provisioned-iops-on-create 字段添加到清单中。此字段必须设置为您在创建永久性磁盘时指定的预配 IOPS 值。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-extreme-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-extreme
  provisioned-iops-on-create:'10000'

创建 pd-example-class.yaml 文件后,请运行以下命令:

kubectl create -f pd-example-class.yaml

创建一个 PersistentVolumeClaim

您可以创建一个引用 Compute Engine 永久性磁盘 CSI 驱动程序的 StorageClass 的 PersistentVolumeClaim。

以下名为 pvc-example.yaml 的文件使用预安装的存储类别 standard-rwo:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: standard-rwo
  resources:
    requests:
      storage: 6Gi

创建 PersistentVolumeClaim 清单后,请运行以下命令:

kubectl create -f pvc-example.yaml

在预安装的 StorageClass (standard-rwo) 中,将 volumeBindingMode 设置为 WaitForFirstConsumer。如果将 volumeBindingMode 设置为 WaitForFirstConsumer,则在调度引用 PersistentVolumeClaim 的 Pod 之前,系统不会预配 PersistentVolume。如果将 StorageClass 中的 volumeBindingMode 设置为 Immediate(或者将其省略),则在创建 PersistentVolumeClaim 后,系统会预配基于永久性磁盘的 PersistentVolume。

创建使用该卷的 Pod

将 Pod 与 PersistentVolume 搭配使用时,我们建议您使用工作负载控制器(例如 Deployment 或 StatefulSet)。虽然您通常不会使用独立 Pod,但为简单起见,以下示例使用了独立 Pod。

以下示例将使用您在上一部分中创建的卷:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       # The path in the container where the volume will be mounted.
       - mountPath: /var/lib/www/html
         # The name of the volume that is being defined in the "volumes" section.
         name: mypvc
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       # References the PersistentVolumeClaim created earlier.
       claimName: podpvc
       readOnly: false

GKE Autopilot 存储兼容性调度

在 Autopilot 集群中,GKE 会自动管理节点预配和资源分配。如需让 Autopilot 预配与所请求的存储类型兼容的节点,您必须在自定义 StorageClass 定义中指定 use-allowed-disk-topology: "true" 参数。

配置此参数会强制执行以下调度行为:

  • 集群自动扩缩器仅预配具有支持所请求磁盘类型的机器类型的新节点。
  • Pod 已调度到兼容的节点上。此调度可防止 Pod 卡在 ContainerCreating 或 Pending 状态。

如需了解详情,请参阅支持的节点调度。

较新的机器系列(例如 C3 或 E4)需要 Google Cloud Hyperdisk 存储(例如 hyperdisk-balanced)。这些机器系列不支持较早的 Persistent Disk 卷类型,例如标准 Persistent Disk (pd-standard) 或 SSD Persistent Disk (pd-ssd) 卷。存储空间兼容性对安排的影响如下:

  • 静默回退:如果某个有状态工作负载使用较早的 Persistent Disk 卷类型(例如标准 Persistent Disk [pd-standard] 或 SSD Persistent Disk [pd-ssd] 卷),但未明确请求特定机器系列,则 GKE 会自动在 E2 节点上调度 Pod,因为这些节点支持这些 Persistent Disk 卷类型。工作负载会从默认的新硬件静默回退。
  • 调度失败(待处理):您可能明确请求了较新的机器系列(例如,使用 nodeSelector 字段或自定义 ComputeClass)。如果您还附加了较早的永久性磁盘卷类型,例如标准 Persistent Disk (pd-standard) 或 SSD 永久性磁盘 (pd-ssd) 卷,GKE 将找不到同时满足这两个限制条件的节点。Pod 将保持 Pending 状态。
  • 多存储类型冲突(待处理):如果 Pod 引用了多个使用不同存储类型的 PVC(例如,将较早的永久性磁盘卷类型(如标准 Persistent Disk [pd-standard])与 Google Cloud Hyperdisk 存储空间相结合),GKE 可能无法找到支持所有限制的节点类型。在这种情况下,Pod 将保持 Pending 状态。
  • 极端磁盘的 CPU 请求不足(待处理):极端卷类型(例如 hyperdisk-extreme 和 pd-extreme)需要具有高 vCPU 数量的大型虚拟机形状。如果您的 Pod 请求的 vCPU 数量过少,GKE 可能会预配不支持相应卷类型的节点配置,导致 Pod 保持 Pending 状态。为确保正确调度,请指定足够大的 CPU 请求,以便 Autopilot 预配受支持的虚拟机配置。如需查看受支持的机器类型和最低 vCPU 要求,请参阅机器支持。

如需了解问题排查步骤以及如何通过检查日志来验证此行为,请参阅工作负载安排在旧版机器系列上或因存储不兼容而卡在 Pending 状态。

使用适用于 Windows 集群的 Compute Engine 永久性磁盘 CSI 驱动程序

以下几个部分介绍了在 GKE 中使用 CSI 驱动程序支持的 Kubernetes 卷的典型过程。这些部分针对使用 Windows 的集群。

确保:

  • 集群版本为 1.19.7-gke.2000、1.20.2-gke.2000 或更高版本。
  • 节点版本为 1.18.12-gke.1203、1.19.6-gke.800 或更高版本。

创建一个 StorageClass

创建适用于 Windows 的 StorageClass 的过程与 Linux 非常相似。请注意,默认安装的 StorageClass 并不适用于 Windows,因为文件系统类型不同。适用于 Windows 的 Compute Engine 永久性磁盘 CSI 驱动程序需要以 NTFS 作为文件系统类型。

例如,您可以使用以下名为 pd- windows-class.yaml 的文件创建一个 StorageClass。请务必将 csi.storage.k8s.io/fstype: NTFS 添加到参数列表中:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-sc-windows
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-balanced
  csi.storage.k8s.io/fstype: NTFS

创建一个 PersistentVolumeClaim

创建适用于 Windows 的 StorageClass 后,您便可以创建引用该 StorageClass 的 PersistentVolumeClaim:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc-windows
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: pd-sc-windows
  resources:
    requests:
      storage: 6Gi

创建使用该卷的 Pod

以下示例将使用您在上一任务中创建的卷:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  # Node selector to ensure the Pod runs on a Windows node.
  nodeSelector:
    kubernetes.io/os: windows
  containers:
    - name: iis-server
      # The container image to use.
      image: mcr.microsoft.com/windows/servercore/iis
      ports:
      - containerPort: 80
      volumeMounts:
      # The path in the container where the volume will be mounted.
      - mountPath: /var/lib/www/html
        name: mypvc
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        # References the PersistentVolumeClaim created earlier.
        claimName: podpvc-windows
        readOnly: false

使用 VolumeAttributeClass 动态修改 Hyperdisk IOPS 和吞吐量

您可以将 VolumeAttributesClass 用于 Compute Engine 永久性磁盘 CSI 驱动程序,以动态修改永久性磁盘属性,包括 IOPS 和吞吐量。确保您的 GKE 集群版本为 1.34 或更高版本。

本部分演示了如何使用 VolumeAttributesClass 动态修改卷性能。您创建了两个 VolumeAttributesClass 资源(silver 和 gold),以定义不同的 IOPS 和吞吐量层级。然后,您需要创建一个 StorageClass、一个引用 silver 层级的 PersistentVolumeClaim,以及一个使用该卷的 Pod。最后,您将 PersistentVolumeClaim 更新为引用 gold 层级,从而动态更新卷的性能设置。

创建 VolumeAttributesClass 以定义性能层级

此部分定义了 VolumeAttributesClass 资源,该资源具有名为 silver 和 gold 的示例层级。

  1. 将以下清单保存为 vac-classes.yaml:

    apiVersion: storage.k8s.io/v1
    kind: VolumeAttributesClass
    metadata:
      name: silver
    driverName: pd.csi.storage.gke.io
    parameters:
      iops: "3000"
      throughput: "188Mi"
    ---
    apiVersion: storage.k8s.io/v1
    kind: VolumeAttributesClass
    metadata:
      name: gold
    driverName: pd.csi.storage.gke.io
    parameters:
      iops: "6000"
      throughput: "345Mi"
    
  2. 应用清单:

    kubectl apply -f vac-classes.yaml
    

为 Hyperdisk 创建 StorageClass

本部分定义了用于预配 Hyperdisk 卷的 StorageClass 资源。

  1. 将以下清单保存为 hyperdisk-sc.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: hyperdisk-example
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
    
  2. 应用清单:

    kubectl apply -f hyperdisk-sc.yaml
    

创建具有初始性能层级的 PVC

此部分创建了一个 PVC,并使用了名为 silver 的初始层级。

  1. 将以下清单保存为 vac-silver-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pv-claim
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: hyperdisk-example
      volumeAttributesClassName: silver
      resources:
        requests:
          storage: 200Gi
    
  2. 应用清单:

    kubectl apply -f vac-silver-pvc.yaml
    
  3. 如需预配永久性卷,请创建使用 PVC 的 Pod。上一部分中创建的 StorageClass 设置了 volumeBindingMode: WaitForFirstConsumer,这会延迟卷预配,直到 Pod 使用 PVC。将以下清单保存为 test-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pvc-pod
    spec:
      containers:
        - name: nginx-container
          image: nginx:latest
          ports:
            - containerPort: 80
          volumeMounts:
            - name: pvc-storage
              mountPath: /usr/share/nginx/html
      volumes:
        - name: pvc-storage
          persistentVolumeClaim:
            claimName: test-pv-claim
    
  4. 应用清单:

    kubectl apply -f test-pod.yaml
    
  5. 如需验证磁盘性能设置,请参阅在 Google Cloud 控制台中验证磁盘性能设置。预配的 IOPS 应为 3000,预配的吞吐量 应为 188。

更新 PVC 以使用其他性能层级

此部分更新了 PVC 以使用 gold 层级,而不是 silver 层级。

  1. 将以下清单保存为 vac-gold-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pv-claim
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: hyperdisk-example
      volumeAttributesClassName: gold
      resources:
        requests:
          storage: 200Gi
    
  2. 应用清单:

    kubectl apply -f vac-gold-pvc.yaml
    
  3. 如需验证磁盘性能设置是否已更新,请参阅在 Google Cloud 控制台中验证磁盘性能设置。预配的 IOPS 应为 6000,预配的吞吐量应为 345。

在 Google Cloud 控制台中验证磁盘性能设置

您可以在 Google Cloud 控制台中查看磁盘详细信息,以验证 IOPS 和吞吐量设置是否已应用于永久性磁盘。

  1. 获取磁盘名称:

    PV_NAME=$(kubectl get pvc test-pv-claim -o=jsonpath='{.spec.volumeName}')
    DISK_NAME=$(kubectl get pv $PV_NAME -o=jsonpath='{.spec.csi.volumeHandle}' | sed 's|.*/||')
    echo "Persistent disk name: $DISK_NAME"
    
  2. 在 Google Cloud 控制台中,前往磁盘页面。

    打开“磁盘”

  3. 点击与上一步输出中的磁盘名称相符的永久性磁盘的名称。

  4. 在磁盘详细信息页面的性能部分中,查看预配的 IOPS 和预配吞吐量。

如需了解详情,请参阅查看 Hyperdisk 的预配性能设置。

动态修改的注意事项

  • 重新应用之前的配置:如果 PVC 因资源不可用等错误而无法与卷属性类绑定,您可以安全地重新应用之前的 PVC。
  • 配额支持:Kubernetes 控制平面可以使用 ResourceQuota 中的 scopeSelector 对引用特定 VolumeAttributesClass 的 PVC 强制执行配额限制。

使用具有非默认文件系统类型的 Compute Engine 永久性磁盘 CSI 驱动程序

GKE 中 Compute Engine 永久性磁盘的默认文件系统类型为 ext4。只要节点映像支持该类型,您也可以使用 xfs 存储类型。如需查看节点映像支持的驱动程序列表,请参阅存储驱动程序支持。

以下示例展示了如何将 xfs(而非 ext4)用作 Compute Engine 永久性磁盘 CSI 驱动程序的默认文件系统类型。

创建一个 StorageClass

  1. 将以下清单保存为名为 pd-xfs-class.yaml 的 YAML 文件:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: xfs-class
    provisioner: pd.csi.storage.gke.io
    parameters:
      # The type of Compute Engine persistent disk to provision.
      type: pd-balanced
      # Specify "xfs" as the filesystem type.
      csi.storage.k8s.io/fstype: xfs
    volumeBindingMode: WaitForFirstConsumer
    
  2. 应用清单:

    kubectl apply -f pd-xfs-class.yaml
    

创建一个 PersistentVolumeClaim

  1. 将以下清单保存为 pd-xfs-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: xfs-pvc
    spec:
      # References the StorageClass created earlier.
      storageClassName: xfs-class
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          # The amount of storage requested.
          storage: 10Gi
    
  2. 应用清单:

    kubectl apply -f pd-xfs-pvc.yaml
    

创建使用该卷的 Pod

  1. 将以下清单保存为 pd-xfs-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pd-xfs-pod
    spec:
      containers:
      - name: cloud-sdk
        image: google/cloud-sdk:slim
        # Keep the container running for 1 hour.
        args: ["sleep","3600"]
        volumeMounts:
        # The path in the container where the volume will be mounted.
        - mountPath: /xfs
          name: xfs-volume
      # Define the volumes available to the containers in the Pod.
      volumes:
      - name: xfs-volume
        persistentVolumeClaim:
          # References the PersistentVolumeClaim created earlier.
          claimName: xfs-pvc
    
  2. 应用清单:

    kubectl apply -f pd-xfs-pod.yaml
    

验证卷是否已正确装载

  1. 在 Pod 中打开 shell 会话:

    kubectl exec -it pd-xfs-pod -- /bin/bash
    
  2. 查找 xfs 分区:

    df -aTh --type=xfs
    

    输出应类似如下所示:

    Filesystem     Type  Size  Used Avail Use% Mounted on
    /dev/sdb       xfs    30G   63M   30G   1% /xfs
    

查看 Compute Engine 永久性磁盘 CSI 驱动程序的日志

您可以使用 Cloud Logging 查看与 Compute Engine 永久性磁盘 CSI 驱动程序相关的事件。日志可帮助您排查问题。

如需详细了解 Cloud Logging,请参阅查看 GKE 日志。

如需查看 Compute Engine 永久性磁盘 CSI 驱动程序的日志,请完成以下步骤:

  1. 前往 Google Cloud 控制台中的 Cloud Logging 页面。

    转到 Cloud Logging

  2. 如需过滤日志条目以仅显示与在您的命名空间中运行的 CSI 驱动程序相关的条目,请运行以下 Cloud Logging 查询:

     resource.type="k8s_container"
     resource.labels.project_id="PROJECT_ID"
     resource.labels.location="LOCATION"
     resource.labels.cluster_name="CLUSTER_NAME"
     resource.labels.namespace_name="kube-system"
     resource.labels.container_name="gce-pd-driver"
    

    替换以下内容:

    • PROJECT_ID:您的项目的名称。
    • LOCATION:集群的 Compute Engine 区域或可用区。
    • CLUSTER_NAME:您的集群的名称。

已知问题

不支持的机器类型

如果您使用的是 C3 系列机器家族,则不支持 pd-standard 永久性磁盘类型。

Autopilot 存储空间兼容性调度

对于以 Autopilot 模式运行的工作负载(在 Autopilot 集群或使用 Autopilot ComputeClasses 的 Standard 集群中),附加了永久性存储空间的 Pod 仅安排在兼容的机器系列上:

  • 旧版永久性磁盘:使用旧版 pd-standard 磁盘的 Pod 仅在支持这些磁盘的机器系列(例如 E2 节点)上运行。
  • Hyperdisk:使用 hyperdisk-balanced 等新一代存储的 Pod 在较新的机器系列(例如 C3 节点)上运行。
  • 待处理状态:如果您明确配置 Pod 在较新的机器系列上运行(例如,通过使用节点选择器请求 C3 节点或通过配置自定义 ComputeClass),但附加了旧版 pd-standard 磁盘,则 Pod 会无限期地保持 Pending 状态。出现此问题的原因是 GKE 找不到同时满足机器类型和磁盘兼容性限制的节点。当您明确选择机器系列时,您需要负责确保 PersistentVolume 和磁盘兼容性。

如果您尝试在机器上运行 Pod,并且该 Pod 使用不受支持的永久性磁盘类型,您将看到 Pod 上发出的如下警告消息:

AttachVolume.Attach failed for volume "pvc-d7397693-5097-4a70-9df0-b10204611053" : rpc error: code = Internal desc = unknown Attach error: failed when waiting for zonal op: operation operation-1681408439910-5f93b68c8803d-6606e4ed-b96be2e7 failed (UNSUPPORTED_OPERATION): [pd-standard] features are not compatible for creating instance.

如果您的集群包含多个具有不同机器家族的节点池,则您可以使用节点污点和节点亲和性来限制可以调度工作负载的位置。例如,您可以使用此方法来限制使用 pd-standard 的工作负载在不受支持的机器家族上运行。

如果您使用的是 pd-extreme 永久性磁盘类型,则需要确保将磁盘挂接到具有适当机器配置的虚拟机实例。如需了解详情,请参阅机器配置支持。

后续步骤