全部產品
Search
文件中心

Container Service for Kubernetes:變更雲端硬碟類型

更新時間:Jul 11, 2025

ACK支援使用多種類型的雲端硬碟作為儲存卷,可以滿足不同情境的儲存效能和成本需求。使用雲端硬碟儲存卷時,您可以根據需求變更雲端硬碟類型。例如您在建立雲端硬碟時選擇了SSD雲端硬碟,但後期需要更高的IOPS,您可以將SSD雲端硬碟變更配置為ESSD雲端硬碟。

前提條件

  • 叢集的版本為1.20及以上,並且使用CSI儲存外掛程式。

    如需升級叢集,請參見手動升級叢集

  • 叢集中已安裝storage-operator組件,且組件版本不低於v1.26.1-50a1499-aliyun。

    說明

    storage-operator組件在叢集中預設安裝。您可以在叢集管理頁的左側導覽列選擇營運管理 > 組件管理,在儲存頁簽下確認storage-operator組件的安裝情況和版本資訊。更多資訊,請參見管理storage-operator組件

  • 如果您的叢集是ACK專有叢集,需確保叢集的WorkerRole和MasterRole具備ModifyDiskSpec許可權。具體操作,請參見建立自訂權限原則

    ACK託管叢集無需進行此授權。

    展開查看權限原則

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:CreateSnapshot",
                    "ecs:DescribeSnapshot",
                    "ecs:DeleteSnapshot",
                    "ecs:ModifyDiskSpec",
                    "ecs:DescribeTaskAttribute"
                ],
                "Resource": "*"
            }
        ]
    }

注意事項

  • 普通雲端硬碟、彈性臨時盤不支援變更類型。

    支援變更配置的情況如下:

    高效雲端硬碟

    支援變更配置到:

    SSD雲端硬碟

    支援變更配置到:

    • ESSD雲端硬碟PL1、PL2或PL3

    • ESSD AutoPL雲端硬碟

    ESSD Entry雲端硬碟

    支援變更配置到:

    • ESSD雲端硬碟PL0、PL1、PL2或PL3

    • ESSD AutoPL雲端硬碟

    ESSD雲端硬碟

    • PL0支援變更配置到:

      • ESSD雲端硬碟PL1、PL2或PL3

      • ESSD AutoPL雲端硬碟

    • PL1、PL2、PL3根據計費方式,支援如下變更配置情況:

      • 如果源雲端硬碟是隨用隨付的計費方式。

        • PL1、PL2或PL3效能層級間相互變更配置

        • 變更配置到ESSD AutoPL雲端硬碟

      • 如果源雲端硬碟是訂用帳戶的計費方式,僅支援從低效能模式升配到高效能模式。

        • ESSD雲端硬碟PL1變更配置到ESSD雲端硬碟PL2

        • ESSD雲端硬碟PL1變更配置到ESSD雲端硬碟PL3

        • ESSD雲端硬碟PL2變更配置到ESSD雲端硬碟PL3

        • ESSD雲端硬碟PL1變更配置到ESSD AutoPL雲端硬碟

    說明
    • ESSD雲端硬碟可以選擇的效能層級與雲端硬碟容量有關,如果您的ESSD雲端硬碟無法選擇更高效能層級,可以先擴容雲端硬碟,然後再升級ESSD雲端硬碟效能層級。

    • 如果變更配置的目標雲端硬碟為ESSD PL3雲端硬碟,變更配置完成後需要重新掛載雲端硬碟或重啟執行個體才能達到ESSD PL3的最佳效能。如果變更配置後沒有重新掛載雲端硬碟或重啟執行個體,則該雲端硬碟無法獲得ESSD PL3的最佳效能,但不會影響資料的可靠性。

    ESSD AutoPL雲端硬碟

    僅支援變更配置到ESSD AutoPL雲端硬碟。

    說明

    ESSD AutoPL雲端硬碟變更配置或從其他雲端硬碟變更配置到ESSD AutoPL雲端硬碟時:

    說明

    當變更配置涉及到ESSD同城冗餘雲端硬碟時,暫不支援調整儲存卷的親和性設定。例如,您將ESSD雲端硬碟變更配置為ESSD同城冗餘雲端硬碟後,使用該雲端硬碟的Pod將依然無法調度到其他可用性區域。

  • 某些類型的雲端硬碟不支援掛載到某些規格的ECS執行個體,您需要確保當前Pod所調度到的ECS執行個體支援變更後的雲端硬碟類型。關於雲端硬碟類型和ECS執行個體規格的匹配關係,請參見執行個體規格類型系列

  • 作為儲存卷的雲端硬碟必須採用隨用隨付方式,變更雲端硬碟類型後,會直接按照新的雲端硬碟類型進行計費。

更多資訊,請參見使用限制

步驟一:配置storage-operator組件開啟雲端硬碟變更配置

串連叢集,執行以下命令修改storage-operator的ConfigMap檔案,開啟雲端硬碟變更配置功能。storage-operator組件中預設的storage-controller負責雲端硬碟變更配置。

kubectl patch configmap/storage-operator \
  -n kube-system \
  --type merge \
  -p '{"data":{"storage-controller":"{\"imageRep\":\"acs/storage-controller\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-controller/install.yaml\",\"type\":\"deployment\"}"}}'

步驟二:建立CR實現雲端硬碟變更配置

重要

為了減少變更配置操作對您業務帶來的影響,請您在業務低峰期進行變更配置。

  1. 建立用於測試雲端盤變更配置的StatefulSet。

    如果您已有掛載了雲端硬碟的StatefulSet,可跳過該步驟。

    1. 使用以下內容,建立StatefulSet.yaml檔案。

      以下YAML將建立一個StatefulSet,該StatefulSet包含一個Pod,Pod掛載了一個40 GiB的ESSD PL1雲端硬碟。

      apiVersion: apps/v1
      kind: StatefulSet
      metadata:
        name: nginx-diskspec
      spec:
        selector:
          matchLabels:
            app: nginx
        replicas: 1
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
              - containerPort: 80
              volumeMounts:
              - name: pvc-disk
                mountPath: /data
            volumes:
              - name: pvc-disk
                persistentVolumeClaim:
                  claimName: disk-pvc
        volumeClaimTemplates:
          - metadata:
              name: pvc-disk
              labels:
                app: nginx
            spec:
              accessModes: [ "ReadWriteOnce" ]
              storageClassName: "alicloud-disk-essd"
              resources:
                requests:
                  storage: 40Gi    
    2. 建立StatefulSet。

      kubectl create -f StatefulSet.yaml
    3. 查看Pod部署情況。

      kubectl get pod -l app=nginx

      預期輸出:

      NAME                 READY   STATUS    RESTARTS   AGE
      nginx-diskspec-0     1/1     Running   0          4m4s
    4. 查看PVC資訊,並擷取PV名稱。

      kubectl get pvc pvc-disk-nginx-diskspec-0

      返回樣本如下,從VOLUME欄位中可以獲得PV名稱為d-uf6ijdcp3aeoi82w****

      NAME                           STATUS    VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS                VOLUMEATTRIBUTESCLASS   AGE
      pvc-disk-nginx-diskspec-0      Bound     d-uf6ijdcp3aeoi82w****   40Gi       RWO            alicloud-disk-essd          <unset>                 5m6s
  2. 確認變更前的雲端硬碟類型。

    kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'

    返回樣本如下,cloud_essd.PL1表示當前雲端硬碟類型為ESSD雲端硬碟PL1。

    {"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}
  3. 建立CR,執行雲端硬碟變更配置操作。

    1. 建立cr.yaml檔案。

      YAML樣本如下,請根據實際情況替換pvNamesdesiredDiskType

      apiVersion: storage.alibabacloud.com/v1beta1
      kind: ContainerStorageOperator
      metadata:
        name: default
      spec:
        operationType: DISKUPGRADE
        operationParams:
          pvNames: "d-uf6ijdcp3aeoi82w****"
          desiredDiskType: "cloud_auto"

      參數

      說明

      operationType

      取值為DISKUPGRADE,表明當前的操作為雲端硬碟變更配置。

      pvNames

      聲明操作對象(PV名稱),支援填寫多個pvName,多個pvName間使用英文半形逗號(,)隔開,例如 "disk-1***,disk-2***,disk-3***"

      desiredDiskType

      聲明變更後的雲端硬碟類型。請根據注意事項中支援的變更配置類型進行配置。

      • cloud_auto:ESSD AutoPL雲端硬碟

      • cloud_essd.PL0:ESSD雲端硬碟PL0

      • cloud_essd.PL1:ESSD雲端硬碟PL1

      • cloud_essd.PL2:ESSD雲端硬碟PL2

      • cloud_essd.PL3:ESSD雲端硬碟PL3

      • cloud_ssd:SSD雲端硬碟

    2. 建立CR。

      kubectl create -f cr.yaml
  4. 確認變更後的雲端硬碟類型。

    1. 觀察CR Status,確認變更配置操作成功。

      kubectl get ContainerStorageOperator default -o yaml

      在返回的status欄位中確認狀態,樣本如下:

        status:
          message: []
          process: 100%
          status: SUCCESS
    2. 查看PV的Label,確認已經變更配置到ESSD AutoPL雲端硬碟。

      kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'

      預期輸出:

      {"csi.alibabacloud.com/disktype":"cloud_auto"}