當雲端硬碟儲存卷的使用空間不足時,您可以擴容雲端硬碟容量以增加儲存空間。ACK支援在1.16及以上版本的叢集中實現CSI雲端硬碟儲存卷的線上擴容。本文介紹如何線上擴容雲端硬碟儲存卷。
適用範圍
本文通過更新PVC的儲存容量聲明實現擴容雲端硬碟儲存卷。該方式適用範圍如下:
雲端硬碟對應的PV所綁定的PVC關聯了StorageClass,並且StorageClass中已配置
allowVolumeExpansion: true。說明ACK預設提供的StorageClass已配置
allowVolumeExpansion: true,您自行建立的StorageClass需要自行配置。StorageClass不支援修改屬性,只能建立。雲端硬碟掛載的應用Pod需處於Running狀態。
如果雲端硬碟類型為普通雲端硬碟,則不支援使用該方式擴容。
如果叢集版本低於1.16,則不支援使用該方式擴容。如需升級叢集,請參見升級叢集。
該方式依賴雲端硬碟的Resize能力。更多資訊,請參見ResizeDisk。
準備工作
為雲端硬碟建立快照。
重要為避免擴容過程中的誤操作導致資料丟失,建議提前為雲端硬碟建立快照,做好資料備份。完成擴容後,您可以刪除快照,避免快照持續計費。具體操作,請參見使用雲端硬碟快照。
如果您的叢集是ACK專有叢集,為叢集的RAM角色添加ResizeDisk許可權。
說明如果是ACK託管叢集,無需進行授權操作。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面左側頂部,選擇目的地組群所在的資源群組和地區,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
單擊基本資料頁簽,在叢集資源地區找到Master RAM 角色並單擊角色連結。
在RAM控制台的角色頁面,添加ResizeDisk許可權。
添加許可權具體步驟,請參見修改自訂權限原則內容和備忘。

操作步驟
在已有應用掛載動態雲端硬碟儲存卷的情況下,您可以通過更新PVC儲存容量聲明的方式,在不暫停Pod的同時,線上擴容雲端硬碟儲存卷。
下文以使用雲端硬碟動態儲存裝置卷中建立的應用為例,進行雲端硬碟儲存卷擴容。
kubectl
串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集或在CloudShell上通過kubectl管理Kubernetes叢集。
查看擴容前Pod和雲端硬碟資訊,以及對應的PVC和StorageClass。
查看雲端硬碟掛載的Pod的資訊,確認Pod處於Running狀態。
kubectl get pod -l app=nginx返回樣本如下:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23h查看雲端硬碟掛載目錄的磁碟空間使用方式。
kubectl exec disk-test-0 -- df -h /data返回樣本如下:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /data查看PVC。
kubectl get pvc返回樣本如下,PVC名稱為
dik-pvc,該PVC綁定的雲端硬碟ID為d-uf6axyb1er071h6o****,容量為20 GiB。PVC關聯的StorageClass為alicloud-disk-wait-for-first-consumer。重要如果是靜態儲存卷,需確認PVC中
storageClassName的配置不為空白,並且叢集中存在同名的StorageClass。如果沒有,請根據已有雲端硬碟儲存卷的屬性建立對應的StorageClass並配置allowVolumeExpansion: true。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h查看StorageClass,確認已開啟擴容。
kubectl get sc alicloud-disk-wait-for-first-consumer -o yaml預期返回如下,
allowVolumeExpansion: true表示已開啟擴容。allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: "2025-01-21T08:48:26Z" name: alicloud-disk-wait-for-first-consumer resourceVersion: "59936" uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: cloud_auto,cloud_essd,cloud_ssd provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumer
修改PVC,擴容雲端硬碟容量。
假設雲端硬碟容量要擴容到30 GiB,命令樣本如下:
kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'等待一段時間(一分鐘內)後,確認雲端硬碟是否擴容成功。
查看PVC。
kubectl get pvc返回樣本如下,可以看到雲端硬碟容量已擴容到30 GiB。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23h查看雲端硬碟掛載目錄的磁碟空間使用方式。
kubectl exec disk-test-0 -- df -h /data返回樣本如下,可以看到已擴容成功。
Filesystem Size Used Avail Use% Mounted on /dev/vdb 30G 24K 30G 1% /data
控制台
控制台操作僅支援動態儲存裝置卷,如果是靜態儲存卷,請參考kubectl操作。
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,進入叢集管理頁。
確認雲端硬碟掛載的Pod處於Running狀態,並查看Pod使用的PVC。
在叢集管理頁的左側導覽列,選擇。
單擊目標應用程式名稱,然後在容器組頁簽下,確認Pod處於Running狀態。

單擊Pod名稱,然後在儲存頁簽下,查看Pod使用的PVC。

查看StorageClass,確認已開啟擴容。
在叢集管理頁的左側導覽列,選擇。
找到雲端硬碟儲存卷使用的StorageClass,單擊查看Yaml。
確認已配置
allowVolumeExpansion: true。
修改PVC的儲存容量聲明,擴容雲端硬碟容量。
在叢集管理頁的左側導覽列,選擇。
找到目標PVC,單擊擴容。
在彈出的對話方塊中,輸入要擴容到的容量,選中注意事項,然後單擊確定。

等待擴容完成,確認PVC的總量已擴容。
相關文檔
如需在儲存卷的使用率高於某個閾值時自動擴容儲存卷,請參見配置雲端硬碟自動擴容策略實現自動擴容。
如果在使用雲端硬碟儲存卷的過程中碰到問題,請參見雲端硬碟儲存卷FAQ進行排查。