本页面介绍了 Google Kubernetes Engine (GKE) 集群如何使用 GKE Hyperdisk 存储池来汇集和共享存储容量、吞吐量和 IOPS。
概览
存储池会按逻辑将物理存储设备分组,以便您细分资源。您可以在这些存储池中预配 Google Cloud Hyperdisk,从而创建 Hyperdisk 存储池。Hyperdisk 存储池提供预先预配的容量、吞吐量和 IOPS,您的 GKE 集群磁盘可以共享这些资源。
您可以使用 Hyperdisk 存储池来更经济高效地管理存储资源。这样,您就可以利用重复数据删除和精简配置等高效技术。
在本指南中,您将使用 us-east4-c
可用区来创建 Hyperdisk Balanced 存储池和其他资源。
规划时的注意事项
在预配和使用 Hyperdisk 存储池之前,请考虑以下要求和限制。
创建和管理存储池
需要遵循以下要求和限制:
- 适用 Compute Engine Hyperdisk 存储池的所有限制。
- 适用在 Hyperdisk 存储池中创建磁盘的所有限制。
- 您创建的 Hyperdisk 存储池的类型决定了您可以在存储池中创建的磁盘类型。请参阅Hyperdisk 存储池的类型。
在存储池中预配启动磁盘
需要遵循以下要求和限制:
- 确保集群的节点位置和节点池的节点位置与存储池的可用区完全匹配。如果您已启用节点自动预配,则不受此限制。节点自动预配功能可根据需要在正确的可用区自动创建节点池。
- 确保运行 Pod 的机器类型支持连接 Hyperdisk Balanced 磁盘类型。Hyperdisk Throughput 不支持用作启动磁盘。请参阅 Hyperdisk 机器类型支持文档。
- 您只能在手动创建或更新的节点池中预配存储池中的启动磁盘。
- 使用节点自动预配功能自动创建节点时,这些节点的启动磁盘无法放置在存储池中。
在存储池中预配已挂接的磁盘
需要遵循以下要求和限制:
- 在存储池中预配已挂接的磁盘所需的最低 GKE 版本为 1.29.2-gke.1035000 及更高版本。
- 确保已启用 Compute Engine Persistent Disk CSI 驱动程序。默认情况下,新的 Autopilot 和 Standard 集群会启用 Compute Engine Persistent Disk 驱动程序,并且在 Autopilot 集群中无法停用或修改。如需启用该驱动程序,请参阅在现有集群上启用 Compute Engine Persistent Disk CSI 驱动程序。
- 确保存储池位于集群的至少一个节点位置和节点池的节点位置。
- 您只能在存储池中预配 Hyperdisk Throughput 和 Hyperdisk Balanced 挂接的磁盘。挂接磁盘的类型必须与存储池的类型一致。如需了解详情,请参阅 Hyperdisk 存储池的类型。
- 确保运行 Pod 的机器类型支持从存储池中挂接您使用的磁盘类型。如需了解详情,请参阅 Hyperdisk 机器类型支持。
配额
创建 Hyperdisk 存储池时,您可以将其配置为标准预配或高级预配,以便设置容量和性能。如果您想增加容量、吞吐量或 IOPS 的配额,请为相关配额过滤条件申请更高的配额。
对 Hyperdisk Balanced 存储池使用以下配额过滤器:
HDB-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
:使用高级容量预配功能增加容量。HDB-STORAGE-POOL-TOTAL-ADVANCED-IOPS-per-project-region
:使用高级性能预配功能提高 IOPS。HDB-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
:使用高级性能预配来提高吞吐量。HDB-TOTAL-GB-per-project-region
:使用标准容量预配功能增加容量。HDB-TOTAL-IOPS-per-project-region
:使用标准性能预配来提高 IOPS。HDB-TOTAL-THROUGHPUT-per-project-region
:使用标准性能预配来提高吞吐量。
对 Hyperdisk Throughput 存储池使用以下配额过滤器:
HDT-STORAGE-POOL-TOTAL-ADVANCED-CAPACITY-per-project-region
:使用高级容量预配功能增加容量。HDT-STORAGE-POOL-TOTAL-ADVANCED-THROUGHPUT-per-project-region
:使用高级性能预配来提高吞吐量。HDT-TOTAL-GB-per-project-region
:使用标准容量预配功能增加容量。HDT-TOTAL-THROUGHPUT-per-project-region
:使用标准性能预配来提高吞吐量。
例如,如果您想通过高级容量预配功能提高每个项目和每个区域的 Hyperdisk Balanced 存储池的总容量,请针对以下过滤条件申请更高的配额:
hdb-storage-pool-total-advanced-capacity-per-project-region
。
价格
如需了解价格详情,请参阅 Hyperdisk 存储池价格。
准备工作
在开始之前,请确保您已执行以下任务:
- 启用 Google Kubernetes Engine API。 启用 Google Kubernetes Engine API
- 如果您要使用 Google Cloud CLI 执行此任务,请安装并初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行
gcloud components update
以获取最新版本。
- 查看支持的区域和可用区,以创建 Hyperdisk 均衡存储池。
创建 Hyperdisk 存储池
在该存储池中预配启动磁盘或挂接磁盘之前,请先创建 Hyperdisk 存储池。如需了解详情,请参阅创建 Hyperdisk 存储池。
请务必在支持的可用区中创建存储池。
例如,使用以下命令创建具有高级容量和高级性能的 Hyperdisk Balanced 存储池,并在 us-east4-c
可用区预配 10 TB 容量、10000 IOPS/s 吞吐量和 1024 MBps 吞吐量:
export PROJECT_ID=PROJECT_ID
export ZONE=us-east4-c
gcloud compute storage-pools create pool-$ZONE \
--provisioned-capacity=10tb --storage-pool-type=hyperdisk-balanced \
--zone=$ZONE --project=$PROJECT_ID --capacity-provisioning-type=advanced \
--performance-provisioning-type=advanced --provisioned-iops=10000 \
--provisioned-throughput=1024
将 PROJECT_ID
替换为您的 Google Cloud 账号的项目 ID。
检查存储池可用区
对于已启用节点自动预配功能的 Autopilot 集群和 Standard 集群,您可以在集群所在区域的任何可用区中创建存储池。如果您创建存储池的可用区中没有节点池,则 Pod 会一直处于
Pending
状态,直到 GKE 集群自动扩缩器能够在该可用区中预配新节点池为止。对于未启用节点自动预配功能的 Standard 集群,请在集群的默认节点可用区中创建存储池,因为存储池是可用区级资源。您可以使用
--node-locations
标志设置集群的节点可用区。- 对于可用区级集群,如果您未指定
--node-locations
,则所有节点都将在集群的主要可用区中创建。 - 对于区域级集群,如果您未指定
--node-locations
,GKE 会将您的工作节点分布到该区域内随机选择的三个可用区。
- 对于可用区级集群,如果您未指定
如需检查集群的默认节点可用区,请运行以下命令:
gcloud container clusters describe CLUSTER_NAME | yq '.locations'
将 CLUSTER_NAME
替换为您在预配启动磁盘或已挂载磁盘时要创建的集群的名称。
在 Hyperdisk 存储池中预配 GKE 启动磁盘
在执行以下任一操作时,您可以在 Hyperdisk 存储池中预配 GKE 启动磁盘:
- 创建新的 GKE 集群时
- 创建新节点池时
- 更新现有节点池时
创建集群时
如需创建在存储池中预配了启动磁盘的 GKE 集群,请使用以下命令:
gcloud container clusters create CLUSTER_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--zone=ZONE
替换以下内容:
CLUSTER_NAME
:为您要创建的集群提供唯一名称。DISK_TYPE
:将其设置为hyperdisk-balanced.
。如果留空,磁盘类型将默认为 Hyperdisk Balanced。STORAGE_POOL,[...]
:存储池资源路径(例如projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
)的英文逗号分隔列表,其中将预配集群的启动磁盘。确保存储池资源路径中的可用区与--node-locations
中的可用区一致。ZONE,[...]
:应复制节点足迹的可用区的英文逗号分隔列表。对于区域级集群,您可以改为指定区域。所有可用区必须与集群位于同一区域,由-location
或--zone
或--region
标志指定。MACHINE_TYPE
:您要为节点使用的受支持的机器类型。ZONE
:要在其中创建集群的可用区。使用—region
标志创建区域级集群。
创建节点池时
如需创建在存储池中预配启动磁盘的 GKE 节点池,请使用以下命令:
gcloud container node-pools create NODE_POOL_NAME \
--disk-type=DISK_TYPE --storage-pools=STORAGE_POOL,[...] \
--node-locations=ZONE,[...] --machine-type=MACHINE_TYPE \
--zone=ZONE --cluster=CLUSTER_NAME
替换以下内容:
NODE_POOL_NAME
:为您要创建的节点池提供唯一名称。DISK_TYPE
:将其设置为hyperdisk-balanced.
。如果留空,磁盘类型将默认为 Hyperdisk Balanced。STORAGE_POOL,[...]
:存储池资源路径(例如projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
)的英文逗号分隔列表,其中将预配集群的启动磁盘。确保存储池资源路径中的可用区与--node-locations
中的值匹配。ZONE,[...]
:应复制节点足迹的可用区的英文逗号分隔列表。所有可用区必须与集群位于同一区域,由-location
或--zone
或--region
标志指定。MACHINE_TYPE
:您要为节点使用的受支持的机器类型。ZONE
:要在其中创建节点池的可用区。CLUSTER_NAME
:要在其中创建节点池的现有集群。
更新节点池时
您可以使用 update
命令在节点池中添加或替换存储池。此命令无法用于从节点池中移除存储池。
如需更新 GKE 节点池,以便其启动磁盘在存储池中预配,请使用以下命令。
gcloud container node-pools update NODE_POOL_NAME \
--storage-pools=STORAGE_POOL,[...] \
--zone=ZONE --cluster=CLUSTER_NAME
NODE_POOL_NAME
:要更新以使用存储池的现有节点池的名称。STORAGE_POOL,[...]
:以英文逗号分隔的现有存储池资源路径列表(例如projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
)。请确保存储池资源路径中的可用区与您要更新的节点池的可用区一致。ZONE
:节点池所在的可用区。CLUSTER_NAME
:此节点池所属的 GKE 集群的名称。
GKE 会根据节点池的升级策略更新节点池。
在 Hyperdisk 存储池中预配 GKE 挂接磁盘
本部分内容:
- 您可以创建新的 GKE 集群,并在存储池中预配挂接磁盘。
- 创建 StorageClass,以便在 Pod 通过 PersistentVolumeClaim (PVC) 请求 PersistentVolume (PV) 时动态预配 PV。为了让 PV 使用存储池的共享资源,您需要使用 StorageClass 中的
storage-pools
参数指定存储池。然后,在 PVC 中使用 StorageClass 来预配 Pod 将使用的 Hyperdisk Balanced 卷。 - 创建 PVC 以请求从 GKE 集群中为 Pod 分配 PV(一块 Hyperdisk 存储空间)。这样,您就可以从存储池的共享资源中受益。
- 创建使用 PVC 的部署,以确保您的应用即使在 Pod 重启和重新调度后也能访问持久性存储空间。
创建 GKE 集群
在开始之前,请查看预配已挂接磁盘时的注意事项。
Autopilot
如需使用 gcloud CLI 创建 Autopilot 集群,请参阅创建 Autopilot 集群。
示例:
gcloud container clusters create-auto CLUSTER_NAME --region=REGION
替换以下内容:
CLUSTER_NAME
:为您要创建的集群提供唯一名称。REGION
:您要创建集群的区域。
如需选择受支持的机器类型,请在创建部署时指定 cloud.google.com/compute-class: Performance
nodeSelector。如需查看可使用性能计算类的 Compute Engine 机器系列列表,请参阅支持的机器系列。
标准
如需使用 gcloud CLI 创建标准可用区级集群,请参阅创建可用区级集群。
如需使用 gcloud CLI 创建标准区域级集群,请参阅创建区域级集群。
示例:
gcloud container clusters create CLUSTER_NAME --zone=ZONE --project=PROJECT_ID --machine-type=MACHINE_TYPE --disk-type="DISK_TYPE"
替换以下内容:
CLUSTER_NAME
:为您要创建的集群提供唯一名称。ZONE
:您在其中创建集群的可用区。使用—region
标志创建区域级集群。PROJECT_ID
:您的 Google Cloud 账号项目 ID。MACHINE_TYPE
:您要为节点使用的受支持的机器类型。DISK_TYPE
:将其设置为hyperdisk-balanced.
。如果留空,磁盘类型将默认为 Hyperdisk Balanced。
创建一个 StorageClass
在 Kubernetes 中,如需指明要将 PV 创建在存储池中,请使用 StorageClass。如需了解详情,请参阅 StorageClasses。
如需创建具有所需吞吐量或 IOPS 级别的新 StorageClass,请执行以下操作:
- 在预配工具字段中使用
pd.csi.storage.gke.io
。 - 指定 Hyperdisk Balanced 存储类型。
- 指定
storage-pools
参数,并将值设置为要使用的特定存储池的列表。列表中的每个存储池都必须采用以下格式指定:projects/PROJECT_ID/zones/ZONE/storagePools/STORAGE_POOL_NAME.
- (可选)指定性能参数
provisioned-throughput-on-create
和provisioned-iops-on-create.
对于由预配的初始磁盘大小确定的性能,每种 Hyperdisk 类型都有默认值。创建 StorageClass 时,您可以根据 Hyperdisk 类型选择性地指定以下参数。如果您省略这些参数,GKE 会使用基于容量的磁盘类型默认值。
参数 | Hyperdisk 类型 | 用法 |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced、Hyperdisk Throughput | 使用“Mi”限定符表示吞吐量值(以 MiBps 为单位);例如,如果您需要的吞吐量为 250 MiBps,请在创建 StorageClass 时指定 "250Mi" 。 |
provisioned-iops-on-create |
Hyperdisk Balanced、Hyperdisk IOPS | IOPS 值应不带任何限定符表示;例如,如果您需要 7,000 IOPS,请在创建 StorageClass 时指定 "7000" 。 |
如需获得允许的吞吐量或 IOPS 值指南,请参阅规划 Hyperdisk 卷的性能级别。
使用以下清单创建并应用名为 storage-pools-sc
的 StorageClass,以便在存储池 projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
中动态预配 PV:
kubectl apply -f - <<EOF
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: storage-pools-sc
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
type: hyperdisk-balanced
provisioned-throughput-on-create: "140Mi"
provisioned-iops-on-create: "3000"
storage-pools: projects/my-project/zones/us-east4-c/storagePools/pool-us-east4-c
EOF
通过利用此 StorageClass 中的 volumeBindingMode: WaitForFirstConsumer
,系统会延迟绑定和预配 PVC,直到创建使用 PVC 的 Pod。这种方法可确保 PV 不会过早预配,并且 PV 与使用它的 Pod 之间存在可用区匹配。如果其可用区不匹配,则 Pod 将保持 Pending
状态。
创建 PersistentVolumeClaim (PVC)
创建一个引用您创建的 storage-pools-sc
StorageClass 的 PVC。
使用以下清单创建一个名为 my-pvc
的 PVC,并将 2048 GiB 作为 Hyperdisk Balanced 卷的目标存储容量:
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: storage-pools-sc
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2048Gi
EOF
创建使用 PVC 的部署
将 Pod 与 PersistentVolume 搭配使用时,请使用工作负载控制器,例如 Deployment 或 StatefulSet。
为确保 Pod 可以在支持 Hyperdisk Balanced 的机器系列的节点池上进行调度,请使用 cloud.google.com/machine-family
节点选择器配置部署。如需了解详情,请参阅Hyperdisk 的机器类型支持。在以下示例部署中,您使用 c3
机器系列。
创建并应用以下清单,以使用上一部分中创建的 PVC 配置 Pod 以部署 Postgres Web 服务器:
Autopilot
在 Autopilot 集群中,指定 cloud.google.com/compute-class: Performance
nodeSelector 以预配 Hyperdisk Balanced 卷。如需了解详情,请参阅为 Pod 申请专用节点。
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
cloud.google.com/compute-class: Performance
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
标准
在未启用节点自动预配功能的 Standard 集群中,请确保具有指定机器系列的节点池已启动并运行,然后再创建部署。否则,Pod 无法调度。
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
nodeSelector:
cloud.google.com/machine-family: c3
containers:
- name: postgres
image: postgres:14-alpine
args: [ "sleep", "3600" ]
volumeMounts:
- name: sdk-volume
mountPath: /usr/share/data/
volumes:
- name: sdk-volume
persistentVolumeClaim:
claimName: my-pvc
EOF
确认已成功创建 Deployment:
kubectl get deployment
Hyperdisk 实例可能需要几分钟才能完成预配并显示 READY
状态。
确认已预配已连接的磁盘
检查名为
my-pvc
的 PVC 是否已成功绑定到 PV:kubectl get pvc my-pvc
输出类似于以下内容:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE my-pvc Bound pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 2Ti RWO storage-pools-sc 2m24s
检查是否已按 StorageClass 和 PVC 中指定的方式预配卷:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
输出类似于以下内容:
NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048
在存储池中拍摄快照和恢复已挂接磁盘
不允许将磁盘移入或移出存储池。如需将磁盘移入或移出存储池,请通过快照重新创建磁盘。如需了解详情,请参阅更改磁盘类型。
本部分内容:
创建测试文件
如需创建和验证测试文件,请执行以下操作:
获取 Postgres 部署的 Pod 名称:
kubectl get pods -l app=postgres
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE postgres-78fc84c9ff-77vx6 1/1 Running 0 44s
在 Pod 中创建测试文件
hello.txt
:kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'echo "Hello World!" > /usr/share/data/hello.txt'
验证测试文件是否已创建:
kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
创建卷快照并删除测试文件
如需创建和验证快照,请执行以下操作:
创建一个 VolumeSnapshotClass,用于指定如何截取和管理卷的快照:
kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: my-snapshotclass driver: pd.csi.storage.gke.io deletionPolicy: Delete EOF
创建 VolumeSnapshot,并从绑定到
my-pvc
PersistentVolumeClaim 的卷中截取快照:kubectl apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: my-snapshot spec: volumeSnapshotClassName: my-snapshotclass source: persistentVolumeClaimName: my-pvc EOF
验证是否已创建卷快照内容:
kubectl get volumesnapshotcontents
输出类似于以下内容:
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE snapcontent-e778fde2-5f1c-4a42-a43d-7f9d41d093da false 2199023255552 Delete pd.csi.storage.gke.io my-snapshotclass my-snapshot default 33s
确认快照已准备就绪:
kubectl get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
输出类似于以下内容:
NAME READY my-snapshot true
删除在 Pod
postgres-78fc84c9ff-77vx6
中创建的原始测试文件hello.txt
:kubectl exec postgres-78fc84c9ff-77vx6 \ -- sh -c 'rm /usr/share/data/hello.txt'
恢复卷快照
如需恢复卷快照和数据,请按以下步骤操作:
创建新的 PVC,以从快照恢复数据,并确保新卷与原始卷位于同一存储池 (
storage-pools-sc
) 中。应用以下清单:kubectl apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-restore spec: dataSource: name: my-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: storage-pools-sc accessModes: - ReadWriteOnce resources: requests: storage: 2048Gi EOF
更新名为
postgres
的现有部署,使其使用您刚刚创建的新恢复的 PVC。应用以下清单:kubectl apply -f - <<EOF apiVersion: apps/v1 kind: Deployment metadata: name: postgres spec: selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: nodeSelector: cloud.google.com/machine-family: c3 containers: - name: postgres image: google/cloud-sdk:slim args: [ "sleep", "3600" ] volumeMounts: - name: sdk-volume mountPath: /usr/share/data/ volumes: - name: sdk-volume persistentVolumeClaim: claimName: pvc-restore EOF
获取新创建的 Pod 的名称,该 Pod 是
postgres
部署的一部分:kubectl get pods -l app=postgres
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE postgres-59f89cfd8c-42qtj 1/1 Running 0 40s
验证从快照恢复卷后,之前已删除的
hello.txt
文件是否现在存在于新 Pod (postgres-59f89cfd8c-42qtj
) 中:kubectl exec postgres-59f89cfd8c-42qtj \ -- sh -c 'cat /usr/share/data/hello.txt' Hello World!
这可以验证快照和恢复过程是否已成功完成,以及快照中的数据是否已恢复到 Pod 可访问的新 PV。
确认从快照创建的卷位于您的存储池中:
kubectl get pvc pvc-restore
输出类似于以下内容:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-restore Bound pvc-b287c387-bc51-4100-a00e-b5241d411c82 2Ti RWO storage-pools-sc 2m24s
检查新卷是否已按 StorageClass 和 PVC 中指定的方式进行预配:
gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
输出类似于以下内容,您可以在其中看到在同一存储池中预配的新卷
pvc-b287c387-bc51-4100-a00e-b5241d411c82
。NAME STATUS PROVISIONED_IOPS PROVISIONED_THROUGHPUT SIZE_GB pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6 READY 3000 140 2048 pvc-b287c387-bc51-4100-a00e-b5241d411c82 READY 3000 140 2048
这样可确保恢复的卷能够从存储池的共享资源和功能中受益。
将现有卷迁移到存储池
使用快照和恢复功能将存储在存储池外部的卷迁移到存储池中。
确保满足以下条件:
- 您的新 PVC
pvc-restore
引用的 StorageClass 会指定storage-pools
参数,指向您要将卷移入其中的存储池。 - 正在截取快照的源 PV 应与 StorageClass 为不指定
storage-pools
参数的 PVC 相关联。
从快照恢复到新卷后,您可以删除源 PVC 和 PV。
清理
为避免系统向您的 Google Cloud 账号收取费用,请删除您在本指南中创建的存储空间资源。请先删除存储池中的所有磁盘,然后再删除存储池。
删除启动磁盘
当您删除节点(通过缩减节点池)或整个节点池时,系统会自动删除关联的启动磁盘。您也可以删除集群,以自动删除其中所有节点池的启动磁盘。
如需了解详情,请参阅以下主题:
删除已挂接的磁盘
如需删除在 Hyperdisk 存储池中预配的已挂接磁盘,请执行以下操作:
删除使用 PVC 的 Pod:
kubectl delete deployments postgres
删除使用 Hyperdisk 存储池 StorageClass 的 PVC。
kubectl delete pvc my-pvc
确认已删除 PVC
pvc-1ff52479-4c81-4481-aa1d-b21c8f8860c6
:gcloud compute storage-pools list-disks pool-us-east4-c --zone=us-east4-c
删除 Hyperdisk 存储池
使用以下命令删除 Hyperdisk 存储池:
gcloud compute storage-pools delete pool-us-east4-c --zone=us-east4-c --project=my-project