全部產品
Search
文件中心

Container Service for Kubernetes:動態線上擴容雲端硬碟儲存卷

更新時間:Aug 10, 2024

在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外掛程式)

  1. 登入Container Service管理主控台

  2. 在控制台左側導覽列中,單擊叢集

  3. 叢集列表頁面,選中目的地組群,並在目的地組群右側操作列下,單擊詳情

  4. 在叢集管理頁左側導覽列中,單擊叢集資訊

  5. 單擊叢集資源頁簽,單擊Master RAM角色連結。

  6. 在RAM控制台中,添加ResizeDisk許可權。添加許可權具體步驟,請參見改自訂權限原則內容和備忘resizedisk

ACK專有叢集(Flexvolume外掛程式)、ACK託管叢集(所有外掛程式類型)

重複上述前4個步驟,然後在叢集管理頁面單擊Worker RAM 角色連結。

不重啟容器實現線上擴容

  1. 使用命令列工具串連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
  2. 在符合使用說明的各個條件下,執行以下命令進行儲存卷擴容。

    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雲端硬碟線上擴容請求。

表示對擴容前的雲端硬碟自動建立極速快照。

表示雲端硬碟擴容。

表示雲端硬碟內檔案系統擴容。

表示擴容成功,刪除自動建立的極速快照。

說明
  • 當流程③和④擴容失敗時,自動建立的極速快照將被保留,用於資料恢複。

  • 使用極速快照功能時,會產生一定費用。具體計費規則,請參見使用快照極速可用功能

使用ESSD雲端硬碟線上擴容自動完成資料備份功能的操作步驟如下。

  1. 在建立StorageClass時,設定參數volumeExpandAutoSnapshot為forced,開啟自動資料備份功能。

  2. 執行以下命令擷取StorageClass資訊。

    kubectl describe sc <your-storageClass-name> | grep volumeExpandAutoSnapshot

    預期在Annotations中輸出:

    "volumeExpandAutoSnapshot":"forced"

    預期在Parameters中輸出:

    volumeExpandAutoSnapshot=forced
  3. 執行以下命令擷取PVC資訊。

    kubectl get pvc

    預期輸出:

    NAME              STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS               AGE
    <your-PVC-name>   Bound    d-2ze39o7sv976dz1y****   20Gi       RWO            <your-storageClass-name>   13h
  4. 在符合快照使用說明雲端硬碟擴容說明除資料備份外的條件,且雲端硬碟類型為ESSD時,進行備份及擴容操作。

    1. 執行以下命令進行備份及擴容。

      kubectl patch pvc <your-PVC-name> -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

      等待一段時間擴容完成,檢查狀態如下。

    2. 執行以下命令查看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小時。

相關文檔

如需在儲存卷的使用率高於某個閾值時自動擴容儲存卷,請參見自動擴容雲端硬碟儲存卷(公測)