如果您的叢集版本低於1.16,或者使用的雲端硬碟類型為普通雲端硬碟,無法通過更新PVC的方式來線上擴容雲端硬碟儲存卷,您可以直接擴容雲端硬碟本身,即手動擴容雲端硬碟及其檔案系統的容量。
適用範圍
本文通過手動擴容儲存介質本身容量的方式(不修改PVC)實現雲端硬碟儲存卷的擴容。如果您的叢集版本低於1.16,或者不滿足線上擴容雲端硬碟儲存卷的要求時,可採用該方式。
該方式需要您在ECS側完成雲端硬碟擴容,叢集內資源不受影響(即在叢集側查看PVC和PV的容量,仍是擴容前的大小)。為盡量保證叢集內PV與PVC的容量顯示與實際一致,推薦您使用線上擴容雲端硬碟儲存卷。
該方式支援線上擴容和離線擴容,請您根據業務需求進行選擇。
雲端硬碟類型為普通雲端硬碟時,不支援線上擴容,請採用離線擴容。
下文以使用雲端硬碟靜態儲存卷中建立的應用為例,進行雲端硬碟儲存卷擴容。
線上擴容
不暫停應用,直接在ECS側完成雲端硬碟的線上擴容。
步驟一:查看雲端硬碟資訊
串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集或在Workbench或CloudShell上使用kubectl串連叢集。
查看雲端硬碟掛載的Pod的資訊,確認Pod處於Running狀態。
kubectl get pod返回樣本如下:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s查看PVC,擷取雲端硬碟ID。
kubectl get pvc返回樣本如下,可以看到PVC綁定的PV為
d-uf628m33r5rsbi******(即雲端硬碟ID),容量為20 GiB。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s
步驟二:擴容雲端硬碟及其檔案系統
登入ECS管理主控台。
在左側導覽列,選擇。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
根據云盤ID找到應用掛載的雲端硬碟,選中雲端硬碟然後單擊底部的擴容。
關於擴容雲端硬碟的詳細操作,請參見擴容雲端硬碟(Linux)。
在彈出的嚮導頁,參考介面提示,完成擴容操作。
在確定目標盤與須知頁面,確認雲端硬碟資訊並閱讀相關提示,然後單擊已知曉並備份,繼續擴容。
在配置擴容方式與容量頁面,設定擴容參數,然後單擊擴容。
參數
描述
樣本
擴容後的容量
設定擴容後的容量,擴容後容量不允許小於當前容量。
30 GiB
擴容方式
選擇線上擴容,擴容後無需重啟,修改後的容量直接生效。
線上擴容
在確認擴容結果頁面,確認雲端硬碟容量已經擴容成功,然後單擊下一步,擴容分區和檔案系統。
說明擴容雲端硬碟容量後,還需要擴容檔案系統,否則容器記憶體儲空間依然是擴容前的大小。
在擴容分區和檔案系統頁面,選擇通過雲助手操作,然後勾選授權本次雲助手操作,單擊授權。
操作後,請確認雲端硬碟容量和檔案系統均已擴容成功。

離線擴容
通過將Replica配置為0的方式暫停應用,完成雲端硬碟擴容後再重新啟動應用。
步驟一:查看雲端硬碟資訊並暫停應用
串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集或在Workbench或CloudShell上使用kubectl串連叢集。
查看雲端硬碟掛載的Pod的資訊,確認Pod處於Running狀態。
kubectl get pod返回樣本如下:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 38s查看PVC,擷取雲端硬碟ID。
kubectl get pvc返回樣本如下,可以看到PVC綁定的PV為
d-uf628m33r5rsbi******(即雲端硬碟ID),容量為20 GiB。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf628m33r5rsbi****** 20Gi RWO disk <unset> 64s將應用縮容為0個副本,暫停應用。
kubectl scale sts disk-test --replicas=0預期輸出:
statefulset.apps/disk-test scaled
步驟二:擴容雲端硬碟
登入ECS管理主控台。
在左側導覽列,選擇。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
根據云盤ID找到應用掛載的雲端硬碟,選中雲端硬碟然後單擊底部的擴容。
在彈出的嚮導頁,參考介面提示,完成擴容操作。
在確定目標盤與須知頁面,確認雲端硬碟資訊並閱讀相關提示,然後單擊已知曉並備份,繼續擴容。
在配置擴容方式與容量頁面,設定擴容參數,然後單擊擴容。
參數
描述
樣本
擴容後的容量
設定擴容後的容量,擴容後容量不允許小於當前容量。
30 GiB
擴容方式
由於暫停應用後,雲端硬碟處於待掛載狀態,此處只能選擇離線擴容。
離線擴容
在確認擴容結果頁面,確認雲端硬碟容量已經擴容成功,然後單擊下一步,擴容分區和檔案系統。
在擴容分區和檔案系統頁面,選擇通過文檔自助操作,在擴容分區和檔案系統(Linux)處查看文檔。
說明擴容雲端硬碟容量後,還需要擴容檔案系統,否則容器記憶體儲空間依然是擴容前的大小。
由於雲端硬碟處於待掛載狀態,無法通過雲助手操作,請手動擴容檔案系統。
步驟三:擴容檔案系統
以下操作針對未分區雲端硬碟。
不建議在Kubernetes中使用分區雲端硬碟。
若PV使用未分區雲端硬碟,則不能手動執行分區操作,否則將會對當前檔案系統產生破壞,造成資料丟失。
若PV使用分區雲端硬碟,則需要擴容分區裝置後擴容檔案系統。具體操作,請參見擴容分區和檔案系統(Linux)或擴容分區和檔案系統(Windows)。
將雲端硬碟掛載到ECS執行個體。
在ECS管理主控台的Block Storage頁面,找到目標雲端硬碟,在操作列中單擊掛載。
在掛載到執行個體的嚮導頁,選擇要掛載的ECS執行個體,然後單擊下一步。
重要請勿選中雲端硬碟相關釋允許存取為。
在分區及建立檔案系統並掛載的嚮導頁,在初始化方式地區單擊稍後設定。
確認雲端硬碟的狀態已變更為使用中。
串連到ECS執行個體。具體操作,請參見ECS遠端連線方式概述。
擷取雲端硬碟裝置符。
命令樣本如下,其中
<serial>為雲端硬碟的序號,請根據實際替換。您可以通過雲端硬碟ID快速確認雲端硬碟序號(雲端硬碟ID=d-{雲端硬碟序號})。更多資訊,請參見查看Block Storage序號。
重要如果雲端硬碟建立時間早於2020年06月10日,則不支援序號特性,您無法通過以下命令擷取雲端硬碟裝置符。您可在雲端硬碟掛載前和掛載後分別執行
ls /dev/vd*命令查看雲端硬碟列表,比較兩者的差異確認目標雲端硬碟的裝置符。realpath /dev/disk/by-id/virtio-<serial>返回樣本如下,表示雲端硬碟裝置符為
/dev/vdb。/dev/vdb擴容檔案系統。
命令樣本如下,其中請替換為實際的雲端硬碟裝置符。
resize2fs /dev/vdb如果返回以下錯誤提示,請先按照提示執行
e2fsck -f /dev/vdb再執行resize2fs /dev/vdb擴容檔案系統。resize2fs 1.46.0 (29-Jan-2020) Please run 'e2fsck -f /dev/vdb' first.擴容檔案系統後,預期返回如下:
resize2fs 1.46.0 (29-Jan-2020) Resizing the filesystem on /dev/vdb to 7864320 (4k) blocks. The filesystem on /dev/vdb is now 7864320 (4k) blocks long.確認檔案系統擴容成功。
建立臨時檔案夾
/mnt/disk/,並將雲端硬碟掛載到臨時檔案夾上.mkdir /mnt/disk mount /dev/vdb /mnt/disk/查看檔案系統大小。
df /mnt/disk/預期返回如下,可以看到
/dev/vdb的容量已擴容到30 GiB。Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /mnt/disk將雲端硬碟從臨時檔案夾卸載。
umount /mnt/disk
從ECS執行個體上卸載雲端硬碟。具體操作,請參見卸載資料盤。
步驟四:重啟應用
將應用擴容為1個副本,重啟應用。
kubectl scale sts disk-test --replicas=1預期輸出:
statefulset.apps/disk-test scaled確認Pod是否恢複。
kubectl get pod預期輸出:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 5s查看檔案系統大小。
kubectl exec -it disk-test-0 -- df /data預期輸出如下,可以看到掛載路徑對應的檔案系統已擴容成功。
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 30787536 24 30771128 1% /data