變更云盤(pán)類(lèi)型
容器服務(wù)ACK提供在集群內(nèi)創(chuàng)建多種云盤(pán)類(lèi)型的功能,以滿足不同場(chǎng)景的存儲(chǔ)性能和價(jià)格需求。您可以根據(jù)業(yè)務(wù)需求變更云盤(pán)的類(lèi)型。例如,創(chuàng)建云盤(pán)時(shí)選擇了SSD云盤(pán),但后期需要更高的IOPS時(shí),您可以將該云盤(pán)變配為ESSD云盤(pán)。本文介紹如何變更云盤(pán)類(lèi)型。
索引
前提條件
已創(chuàng)建Kubernetes集群,Kubernetes版本為v1.20及以上,且存儲(chǔ)插件選擇為CSI。具體操作,請(qǐng)參見(jiàn)已創(chuàng)建Kubernetes托管版集群。
storage-operator組件版本不低于v1.26.1-50a1499-aliyun。關(guān)于升級(jí)storage-operator組件的操作,請(qǐng)參見(jiàn)管理組件。
若您的集群為ACK專有版集群,則需要為集群WorkerRole和MasterRole配置如下權(quán)限。具體操作,請(qǐng)參見(jiàn)創(chuàng)建自定義權(quán)限策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateSnapshot", "ecs:DescribeSnapshot", "ecs:DeleteSnapshot", "ecs:ModifyDiskSpec", "ecs:DescribeTaskAttribute" ], "Resource": "*" } ] }
說(shuō)明ACK Pro版集群無(wú)需配置權(quán)限。
使用限制
不支持ESSD AutoPL云盤(pán)和ESSD PL-X云盤(pán)的變配。
關(guān)于變更云盤(pán)類(lèi)型的限制條件,請(qǐng)參見(jiàn)限制條件。
注意事項(xiàng)
關(guān)于變更云盤(pán)類(lèi)型的注意事項(xiàng),請(qǐng)參見(jiàn)注意事項(xiàng)。
計(jì)費(fèi)說(shuō)明
關(guān)于變更云盤(pán)類(lèi)型的計(jì)費(fèi)說(shuō)明,請(qǐng)參見(jiàn)計(jì)費(fèi)說(shuō)明。
使用方式
使用以下命令,修改集群中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\"}"}}'
使用以下內(nèi)容,在集群中創(chuàng)建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"
參數(shù)
說(shuō)明
operationType
取值為DISKUPGRADE,表明當(dāng)前的操作為云盤(pán)升級(jí)。
pvNames
聲明當(dāng)前的操作對(duì)象,支持填寫(xiě)多個(gè)pvName,多個(gè)pvName間使用英文半角逗號(hào)(,)隔開(kāi),例如 "disk-1***,disk-2***,disk-3***"。
desiredDiskType
聲明變更后的云盤(pán)類(lèi)型,支持如下類(lèi)型。
cloud_efficiency
cloud_ssd
cloud_essd.PL0
cloud_essd.PL1
cloud_essd.PL2
cloud_essd.PL3
使用示例
使用以下內(nèi)容,創(chuàng)建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****
執(zhí)行以下命令,部署一個(gè)使用云盤(pán)存儲(chǔ)的應(yīng)用。
kubectl apply -f sts-test.yaml
執(zhí)行以下命令,查看Pod狀態(tài)。
kubectl get pods sts-test-0
預(yù)期輸出:
NAME READY STATUS RESTARTS sts-test-0 1/1 Running 0
等待Pod處于Running狀態(tài)后,執(zhí)行以下命令,獲取Pod關(guān)聯(lián)的pvName。
kubectl get pvc disk-sts-test-0
預(yù)期輸出:
NAME STATUS VOLUME CAPACITY ACCESS MODES disk-sts-test-0 Bound disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08 500Gi RWX
預(yù)期輸出表明,此Pod關(guān)聯(lián)的pvName為disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08。
使用以下內(nèi)容,將pvName作為參數(shù)寫(xiě)入CR中并創(chuàng)建。
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"
觀察CR status狀態(tài)變?yōu)?span data-tag="ph" id="codeph-q7d-pur-c03" class="ph">
SUCCESS
,表明云盤(pán)變配任務(wù)已完成。執(zhí)行以下命令,查看PV的labels,確認(rèn)相關(guān)PV是否變更成功。
kubectl get pv disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08 -oyaml
部分預(yù)期輸出:
labels: csi.alibabacloud.com/disktype:cloud_essd.PL2 name: disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08 resourceVersion:"89703" uid: 5049a02d-dce3-47a0-9cc6-a4b9c6****
預(yù)期輸出表明,云盤(pán)已成功變更為
cloud_essd.PL2
類(lèi)型。