全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:变更云盘类型

更新时间:Oct 10, 2026

ACK支持使用多种类型的云盘作为存储卷,可以满足不同场景的存储性能和成本需求。使用云盘存储卷时,您可以根据需求变更云盘类型。例如您在创建云盘时选择了SSD云盘,但后期需要更高的IOPS,您可以将SSD云盘变配为ESSD云盘。

前提条件

  • 集群的版本为1.20及以上,并且使用CSI存储插件。

    如需升级集群,请参见手动升级集群。

  • 集群中已安装storage-operator组件,且组件版本不低于v1.26.1-50a1499-aliyun。

    storage-operator在集群中默认安装,可在集群管理页的左侧导航栏选择运维管理 > 组件管理,确认组件安装情况。

    storage-operator中默认的storage-controller负责云盘变配。组件为v1.33.1以下版本时,还需修改storage-operator的ConfigMap,手动开启。

    展开查看具体步骤

    连接集群,执行以下命令修改storage-operator的ConfigMap文件,开启云盘变配功能。

    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\"}"}}'
  • 如果集群为ACK专有集群,需确保集群的WorkerRole和MasterRole具备ModifyDiskSpec权限。具体操作,请参见创建自定义权限策略。

    ACK托管集群无需进行此授权。

    展开查看权限策略

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

注意事项

  • 普通云盘、弹性临时盘不支持变更类型。

    支持变配的情况如下:

    ESSD云盘

    属于本地冗余类型云盘:

    • PL0支持直接变配到:

      • ESSD 云盘PL1、PL2或PL3

      • ESSD AutoPL云盘

      • ESSD 同城冗余云盘

        只有作为数据盘使用时,才支持变配到ESSD 同城冗余云盘。
    • PL1、PL2、PL3根据计费方式,支持如下变配情况:

      • 如果原云盘的计费方式为按量付费。

        • PL1、PL2及PL3性能级别间可相互变配

        • 可直接变配到ESSD AutoPL 云盘

        • 仅PL1支持直接变配到ESSD 同城冗余云盘

          只有作为数据盘使用时,才支持变配到ESSD 同城冗余云盘。
      • 如果原云盘的计费方式为包年包月,仅支持升高性能配置。

        • ESSD 云盘PL1变配到ESSD云盘PL2

        • ESSD 云盘PL1变配到ESSD云盘PL3

        • ESSD 云盘PL2变配到ESSD云盘PL3

        • ESSD 云盘PL1变配到ESSD AutoPL云盘

        • ESSD 云盘PL1数据盘可变配到ESSD 同城冗余云盘

    ESSD AutoPL云盘

    属于本地冗余类型云盘,支持直接变配到:

    • ESSD AutoPL云盘

      在变配中可以修改预配置性能,但不支持修改性能突发,可在变配成功后调整。

    • ESSD 同城冗余云盘

      • 变配为ESSD 同城冗余云盘时,需关闭预配置及性能突发配置。

        ESSD 同城冗余云盘与 ESSD AutoPL云盘的性能上限不同,关闭预配置和性能突发可能影响业务,变配前请先了解块存储性能,确保符合业务需求。
      • 只有作为数据盘使用时,才支持变配为ESSD 同城冗余云盘。

    ESSD 同城冗余云盘

    属于同城冗余类型云盘:

    1. 请选择需要变配的可用区。

      • 云盘状态为使用中:选项置灰且不可选择。变配后的本地冗余云盘的可用区与当前云盘所挂载实例的可用区相同。

      • 云盘状态为待挂载:变配后的本地冗余云盘仅支持挂载至所选可用区下的实例。

    2. 选择变配后的云盘类型。

      支持直接变配到:

      • ESSD 云盘PL1、PL2或PL3

      • ESSD AutoPL云盘

    ESSD Entry云盘

    属于本地冗余类型云盘,支持直接变配到:

    • ESSD云盘PL0、PL1、PL2或PL3

    • ESSD AutoPL云盘

    • ESSD 同城冗余云盘

      只有作为数据盘使用时,支持变配为ESSD 同城冗余云盘。

    高效云盘

    属于本地冗余类型云盘,支持直接变配到:

    • SSD云盘

    • ESSD Entry云盘

      仅通用算力型(U实例)和经济型实例规格族e支持挂载。
    • ESSD云盘PL0、PL1、PL2或PL3

    • ESSD AutoPL云盘

    SSD云盘

    属于本地冗余类型云盘,支持直接变配到:

    • ESSD云盘PL1、PL2或PL3

    • ESSD AutoPL云盘

    当变配涉及到ESSD同城冗余云盘时,暂不支持调整存储卷的亲和性设置。例如,将ESSD云盘变配为ESSD同城冗余云盘后,使用该云盘的Pod将依然无法调度到其他可用区。
  • 某些类型的云盘不支持挂载到某些规格的ECS实例,您需要确保当前Pod所调度到的ECS实例支持变更后的云盘类型。关于云盘类型和ECS实例规格的匹配关系,请参见实例规格族。

  • 作为存储卷的云盘必须采用按量付费方式,变更云盘类型后,会直接按照新的云盘类型进行计费。

  • 为了减少变配操作对您业务带来的影响,请在业务低峰期进行变配。

更多信息,请参见适用范围。

步骤一:创建示例工作负载

如果已有挂载了云盘的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

步骤二:确认变更前的云盘类型

在变更前,确认当前挂载的云盘类型。

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

返回示例如下,cloud_essd.PL1表示当前云盘类型为ESSD云盘PL1。

{"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}

步骤三:创建CR,执行云盘变配操作

  1. 创建cr.yaml文件。

    YAML示例如下,请根据实际情况替换pvNames和desiredDiskType。

    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
  3. 确认变更后的云盘类型。

    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"}