在1.16版本的叢集中,雲端硬碟儲存卷線上擴容已經進入Beta階段。ACK支援在1.16及以上版本的叢集中實現CSI雲端硬碟線上擴容。本文介紹應用線上時如何動態擴容雲端硬碟,從而增加雲端硬碟空間。
使用說明
使用限制
為保證資料擴容安全,在未啟用線上擴容自動完成資料備份功能時,僅支援線上擴容2000 GiB及以下容量的雲端硬碟;啟用該功能後,可支援擴容32 TiB及以下容量的雲端硬碟。
資料備份
擴容儲存卷前,請先備份雲端硬碟快照,以防擴容過程異常導致資料出現問題。
適用範圍
只有動態儲存裝置卷才可以進行儲存捲動態擴容,即配置了StorageClassName的PVC。
不支援擴容InlineVolume類型(非PV、PVC方式)的雲端硬碟儲存卷。
不支援動態擴容普通雲端硬碟類型。
StorageClass需要配置為AllowVolumeExpansion: True。ACK叢集預設提供的StorageClass為True,自建的StorageClass需要自行配置。
應用Pod需處於Running狀態。
外掛程式版本
升級您使用的CSI外掛程式到最新版本。
為RAM使用者添加ResizeDisk許可權
實現雲端硬碟線上擴容前,您需要為叢集的RAM角色添加ResizeDisk許可權。針對不同叢集和外掛程式類型,添加ResizeDisk許可權的步驟如下:
ACK專有叢集(CSI外掛程式)
在控制台左側導覽列中,單擊叢集。
在叢集列表頁面,選中目的地組群,並在目的地組群右側操作列下,單擊詳情。
在叢集管理頁左側導覽列中,單擊叢集資訊。
單擊叢集資源頁簽,單擊Master RAM角色連結。
在RAM控制台中,添加ResizeDisk許可權。添加許可權具體步驟,請參見改自訂權限原則內容和備忘。
ACK專有叢集(Flexvolume外掛程式)、ACK託管叢集(所有外掛程式類型)
重複上述前4個步驟,然後在叢集管理頁面單擊Worker RAM 角色連結。
不重啟容器實現線上擴容
使用命令列工具串連ACK叢集,請參見步驟二:選擇叢集憑證類型。
本文假設應用的目前狀態如下。
執行以下命令擷取Pod資訊。
kubectl get pod
預期輸出:
<your-pod-name> 1/1 Running 0 42s
執行以下命令查看Pod的掛載詳情。
kubectl exec <your-pod-name> -- df /data
預期輸出:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 20511312 45080 20449848 1% /data
執行以下命令擷取PVC資訊。
kubectl get pvc
預期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE <your-PVC-name> Bound d-wz9hpoifm43yn9zi**** 20Gi RWO alicloud-disk-topology-alltype 57s
執行以下命令擷取PV資訊。
kubectl get pv
預期輸出:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE d-wz9hpoifm43yn9zi**** 20Gi RWO Delete Bound default/<your-PVC-name> alicloud-disk-topology-alltype 65s
在符合使用說明的各個條件下,執行以下命令進行儲存卷擴容。
kubectl patch pvc <your-PVC-name> -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
等待一定時間(一分鐘以內)後擴容完成,檢查狀態如下。
執行以下命令查看PV資訊。
kubectl get pv d-wz9hpoifm43yn9zi****
預期輸出:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE d-wz9hpoifm43yn9zi**** 30Gi RWO Delete Bound default/<your-PVC-name> alicloud-disk-topology-alltype 5m23s
執行以下命令查看PVC資訊。
kubectl get pvc
預期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE <your-PVC-name> Bound d-wz9hpoifm43yn9zi**** 30Gi RWO alicloud-disk-topology-alltype 5m10s
執行以下命令查看Pod的掛載詳情。
kubectl exec <your-pod-name> -- df /data
預期輸出:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30832548 45036 30771128 1% /data
您只需要執行一條命令即可完成所有的擴容操作。
ESSD雲端硬碟線上擴容自動完成資料備份
ESSD雲端硬碟線上擴容自動完成資料備份功能的實現流程如下圖所示。
流程式號 | 說明 |
① | 表示建立ESSD雲端硬碟線上擴容請求。 |
② | 表示對擴容前的雲端硬碟自動建立極速快照。 |
③ | 表示雲端硬碟擴容。 |
④ | 表示雲端硬碟內檔案系統擴容。 |
⑤ | 表示擴容成功,刪除自動建立的極速快照。 |
當流程③和④擴容失敗時,自動建立的極速快照將被保留,用於資料恢複。
使用極速快照功能時,會產生一定費用。具體計費規則,請參見使用快照極速可用功能。
使用ESSD雲端硬碟線上擴容自動完成資料備份功能的操作步驟如下。
在建立StorageClass時,設定參數volumeExpandAutoSnapshot為forced,開啟自動資料備份功能。
執行以下命令擷取StorageClass資訊。
kubectl describe sc <your-storageClass-name> | grep volumeExpandAutoSnapshot
預期在Annotations中輸出:
"volumeExpandAutoSnapshot":"forced"
預期在Parameters中輸出:
volumeExpandAutoSnapshot=forced
執行以下命令擷取PVC資訊。
kubectl get pvc
預期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE <your-PVC-name> Bound d-2ze39o7sv976dz1y**** 20Gi RWO <your-storageClass-name> 13h
在符合快照使用說明和雲端硬碟擴容說明除資料備份外的條件,且雲端硬碟類型為ESSD時,進行備份及擴容操作。
執行以下命令進行備份及擴容。
kubectl patch pvc <your-PVC-name> -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
等待一段時間擴容完成,檢查狀態如下。
執行以下命令查看PVC資訊。
kubectl describe pvc <your-PVC-name>
預期在Events中輸出:
Normal SnapshotCreatedSuccessfully 91s csi-controller-server ControllerExpandVolume:: Snapshot create successful: snapshotName[volume-expand-auto-snapshot-d-2ze39o7sv976dz1y****-2022-08-17-21:30:48], sourceId[d-2ze39o7sv976dz1y****], snapshotId[s-2ze85t4rk5d695ha****]
雲端硬碟通過自動快照實現資料備份。
若擴容成功,快照將自動刪除。
若擴容失敗,可通過快照手動恢複資料,快照預設保留時間24小時。
相關文檔
如需在儲存卷的使用率高於某個閾值時自動擴容儲存卷,請參見自動擴容雲端硬碟儲存卷(公測)。