全部產品
Search
文件中心

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

更新時間:Jun 20, 2024

Container ServiceACK提供在叢集內建立多種雲端硬碟類型的功能,以滿足不同情境的儲存效能和價格需求。您可以根據業務需求變更雲端硬碟的類型。例如,建立雲端硬碟時選擇了SSD雲端硬碟,但後期需要更高的IOPS時,您可以將該雲端硬碟變更配置為ESSD雲端硬碟。本文介紹如何變更雲端硬碟類型。

索引

前提條件

  • 已建立Kubernetes叢集,Kubernetes版本為v1.20及以上,且儲存外掛程式選擇為CSI。具體操作,請參見已建立Kubernetes託管版叢集

  • storage-operator組件版本不低於v1.26.1-50a1499-aliyun。關於升級storage-operator組件的操作,請參見管理組件

  • 若您的叢集為ACK專有版叢集,則需要為叢集WorkerRole和MasterRole配置如下許可權。具體操作,請參見建立自訂權限原則

    展開查看ACK專有版叢集WorkerRole和MasterRole權限原則內容

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

    ACK Pro版叢集無需配置許可權。

使用限制

  • 不支援ESSD AutoPL雲端硬碟和ESSD PL-X雲端硬碟的變更配置。

  • 關於變更雲端硬碟類型的限制條件,請參見限制條件

注意事項

關於變更雲端硬碟類型的注意事項,請參見注意事項

計費說明

關於變更雲端硬碟類型的計費說明,請參見計費說明

使用方式

  1. 使用以下命令,修改叢集中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\"}"}}'
  2. 使用以下內容,在叢集中建立CR。

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerStorageOperator
    metadata:
      name: default
    spec:
      operationType: DISKUPGRADE
      operationParams:
        pvNames: "disk-1***,disk-2***,disk-3***"
        desiredDiskType: "cloud_essd.PL2"

    參數

    說明

    operationType

    取值為DISKUPGRADE,表明當前的操作為雲端硬碟升級。

    pvNames

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

    desiredDiskType

    聲明變更後的雲端硬碟類型,支援如下類型。

    • cloud_efficiency

    • cloud_ssd

    • cloud_essd.PL0

    • cloud_essd.PL1

    • cloud_essd.PL2

    • cloud_essd.PL3

使用樣本

  1. 使用以下內容,建立sts-test.yaml檔案。

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: sts-test
    spec:
      podManagementPolicy: Parallel
      selector:
        matchLabels:
          app: sts-test
      replicas: 1
      serviceName: sts-test
      template:
        metadata:
          labels:
            app: sts-test
        spec:
          containers:
          - name: mysql
            image: mysql:5.7
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password
            imagePullPolicy: IfNotPresent
            volumeMounts:
            - name: disk
              mountPath: /data
      volumeClaimTemplates:
      - metadata:
          name: disk
        spec:
          accessModes: [ "ReadWriteMany" ]
          storageClassName: alicloud-disk-topology-alltype
          resources:
            requests:
              storage: 40Gi
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: mysql-pass
    type: Opaque
    data:
      username: dGVz****            
      password: dGVzdDEt****    
  2. 執行以下命令,部署一個使用雲端硬碟儲存的應用。

    kubectl apply -f sts-test.yaml
  3. 執行以下命令,查看Pod狀態。

    kubectl get pods sts-test-0

    預期輸出:

    NAME          READY  STATUS    RESTARTS
    sts-test-0    1/1    Running   0
  4. 等待Pod處於Running狀態後,執行以下命令,擷取Pod關聯的pvName。

    kubectl get pvc disk-sts-test-0

    預期輸出:

    NAME              STATUS   VOLUME                                        CAPACITY   ACCESS MODES
    disk-sts-test-0   Bound    disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08     500Gi      RWX

    預期輸出表明,此Pod關聯的pvName為disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08。

  5. 使用以下內容,將pvName作為參數寫入CR中並建立。

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerStorageOperator
    metadata:
      name: default
    spec:
      operationType: DISKUPGRADE
      operationParams:
        pvNames: "disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08"
        desiredDiskType: "cloud_essd.PL2"
  6. 觀察CR status狀態變為SUCCESS,表明雲端硬碟變更配置任務已完成。

    CR

  7. 執行以下命令,查看PV的labels,確認相關PV是否變更成功。

    kubectl get pv disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08 -oyaml

    部分預期輸出:

    labels:
      csi.alibabacloud.com/disktype:cloud_essd.PL2
    name: disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08
    resourceVersion:"89703"
    uid: 5049a02d-dce3-47a0-9cc6-a4b9c6****

    預期輸出表明,雲端硬碟已成功變更為cloud_essd.PL2類型。