全部產品
Search
文件中心

Container Service for Kubernetes:擴容雲端硬碟儲存卷(1.16以下版本叢集)

更新時間:Sep 24, 2025

如果您的叢集版本低於1.16,或者使用的雲端硬碟類型為普通雲端硬碟,無法通過更新PVC的方式來線上擴容雲端硬碟儲存卷,您可以直接擴容雲端硬碟本身,即手動擴容雲端硬碟及其檔案系統的容量。

適用範圍

本文通過手動擴容儲存介質本身容量的方式(不修改PVC)實現雲端硬碟儲存卷的擴容。如果您的叢集版本低於1.16,或者不滿足線上擴容雲端硬碟儲存卷的要求時,可採用該方式。

重要

該方式需要您在ECS側完成雲端硬碟擴容,叢集內資源不受影響(即在叢集側查看PVC和PV的容量,仍是擴容前的大小)。為盡量保證叢集內PV與PVC的容量顯示與實際一致,推薦您使用線上擴容雲端硬碟儲存卷

該方式支援線上擴容和離線擴容,請您根據業務需求進行選擇。

  • 線上擴容:不暫停應用,但檔案系統線上擴容時,如果IO流量高,存在IO報錯的風險。

  • 離線擴容:暫停應用後磁碟IO會暫停,因此檔案系統離線擴容時資料更安全,但應用會暫停一段時間。

重要

雲端硬碟類型為普通雲端硬碟時,不支援線上擴容,請採用離線擴容。

下文以使用雲端硬碟靜態儲存卷中建立的應用為例,進行雲端硬碟儲存卷擴容。

線上擴容

不暫停應用,直接在ECS側完成雲端硬碟的線上擴容。

步驟一:查看雲端硬碟資訊

  1. 串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集在Workbench或CloudShell上使用kubectl串連叢集

  2. 查看雲端硬碟掛載的Pod的資訊,確認Pod處於Running狀態。

    kubectl get pod 

    返回樣本如下:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          38s
  3. 查看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

步驟二:擴容雲端硬碟及其檔案系統

  1. 登入ECS管理主控台

  2. 在左側導覽列,選擇儲存與快照 > Block Storage

  3. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。地區

  4. 根據云盤ID找到應用掛載的雲端硬碟,選中雲端硬碟然後單擊底部的擴容

    關於擴容雲端硬碟的詳細操作,請參見擴容雲端硬碟(Linux)
  5. 在彈出的嚮導頁,參考介面提示,完成擴容操作。

    • 確定目標盤與須知頁面,確認雲端硬碟資訊並閱讀相關提示,然後單擊已知曉並備份,繼續擴容

    • 配置擴容方式與容量頁面,設定擴容參數,然後單擊擴容

      參數

      描述

      樣本

      擴容後的容量

      設定擴容後的容量,擴容後容量不允許小於當前容量。

      30 GiB

      擴容方式

      選擇線上擴容,擴容後無需重啟,修改後的容量直接生效。

      線上擴容

    • 確認擴容結果頁面,確認雲端硬碟容量已經擴容成功,然後單擊下一步,擴容分區和檔案系統

      說明

      擴容雲端硬碟容量後,還需要擴容檔案系統,否則容器記憶體儲空間依然是擴容前的大小。

    • 擴容分區和檔案系統頁面,選擇通過雲助手操作,然後勾選授權本次雲助手操作,單擊授權

      操作後,請確認雲端硬碟容量和檔案系統均已擴容成功。

      雲端硬碟擴容

離線擴容

通過將Replica配置為0的方式暫停應用,完成雲端硬碟擴容後再重新啟動應用。

步驟一:查看雲端硬碟資訊並暫停應用

  1. 串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集在Workbench或CloudShell上使用kubectl串連叢集

  2. 查看雲端硬碟掛載的Pod的資訊,確認Pod處於Running狀態。

    kubectl get pod 

    返回樣本如下:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          38s
  3. 查看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
  4. 將應用縮容為0個副本,暫停應用。

    kubectl scale sts disk-test --replicas=0

    預期輸出:

    statefulset.apps/disk-test scaled

步驟二:擴容雲端硬碟

  1. 登入ECS管理主控台

  2. 在左側導覽列,選擇儲存與快照 > Block Storage

  3. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。地區

  4. 根據云盤ID找到應用掛載的雲端硬碟,選中雲端硬碟然後單擊底部的擴容

  5. 在彈出的嚮導頁,參考介面提示,完成擴容操作。

    • 確定目標盤與須知頁面,確認雲端硬碟資訊並閱讀相關提示,然後單擊已知曉並備份,繼續擴容

    • 配置擴容方式與容量頁面,設定擴容參數,然後單擊擴容

      參數

      描述

      樣本

      擴容後的容量

      設定擴容後的容量,擴容後容量不允許小於當前容量。

      30 GiB

      擴容方式

      由於暫停應用後,雲端硬碟處於待掛載狀態,此處只能選擇離線擴容

      離線擴容

    • 確認擴容結果頁面,確認雲端硬碟容量已經擴容成功,然後單擊下一步,擴容分區和檔案系統

    • 擴容分區和檔案系統頁面,選擇通過文檔自助操作,在擴容分區和檔案系統(Linux)處查看文檔。

      說明
      • 擴容雲端硬碟容量後,還需要擴容檔案系統,否則容器記憶體儲空間依然是擴容前的大小。

      • 由於雲端硬碟處於待掛載狀態,無法通過雲助手操作,請手動擴容檔案系統。

步驟三:擴容檔案系統

以下操作針對未分區雲端硬碟。

重要

不建議在Kubernetes中使用分區雲端硬碟。

  1. 將雲端硬碟掛載到ECS執行個體。

    1. ECS管理主控台Block Storage頁面,找到目標雲端硬碟,在操作列中單擊掛載

    2. 掛載到執行個體的嚮導頁,選擇要掛載的ECS執行個體,然後單擊下一步

      重要

      請勿選中雲端硬碟相關釋允許存取為。

    3. 分區及建立檔案系統並掛載的嚮導頁,在初始化方式地區單擊稍後設定

    4. 確認雲端硬碟的狀態已變更為使用中

  2. 串連到ECS執行個體。具體操作,請參見ECS遠端連線方式概述

  3. 擷取雲端硬碟裝置符。

    命令樣本如下,其中<serial>為雲端硬碟的序號,請根據實際替換。

    您可以通過雲端硬碟ID快速確認雲端硬碟序號(雲端硬碟ID=d-{雲端硬碟序號})。更多資訊,請參見查看Block Storage序號

    重要

    如果雲端硬碟建立時間早於2020年06月10日,則不支援序號特性,您無法通過以下命令擷取雲端硬碟裝置符。您可在雲端硬碟掛載前和掛載後分別執行ls /dev/vd*命令查看雲端硬碟列表,比較兩者的差異確認目標雲端硬碟的裝置符。

    realpath /dev/disk/by-id/virtio-<serial>

    返回樣本如下,表示雲端硬碟裝置符為/dev/vdb

    /dev/vdb
  4. 擴容檔案系統。

    命令樣本如下,其中請替換為實際的雲端硬碟裝置符。

    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.
  5. 確認檔案系統擴容成功。

    1. 建立臨時檔案夾/mnt/disk/,並將雲端硬碟掛載到臨時檔案夾上.

      mkdir /mnt/disk
      mount /dev/vdb /mnt/disk/
    2. 查看檔案系統大小。

      df /mnt/disk/

      預期返回如下,可以看到/dev/vdb 的容量已擴容到30 GiB。

      Filesystem     1K-blocks  Used Available Use% Mounted on
      /dev/vdb        30787536    24  30771128   1% /mnt/disk
    3. 將雲端硬碟從臨時檔案夾卸載。

      umount /mnt/disk
  6. 從ECS執行個體上卸載雲端硬碟。具體操作,請參見卸載資料盤

步驟四:重啟應用

  1. 將應用擴容為1個副本,重啟應用。

    kubectl scale sts disk-test --replicas=1

    預期輸出:

    statefulset.apps/disk-test scaled
  2. 確認Pod是否恢複。

    kubectl get pod

    預期輸出:

    NAME          READY   STATUS    RESTARTS   AGE
    disk-test-0   1/1     Running   0          5s
  3. 查看檔案系統大小。

    kubectl exec -it disk-test-0 -- df /data

    預期輸出如下,可以看到掛載路徑對應的檔案系統已擴容成功。

    Filesystem     1K-blocks  Used Available Use% Mounted on
    /dev/vdb        30787536    24  30771128   1% /data