Container ServiceACK提供在叢集內建立多種雲端硬碟類型的功能,以滿足不同情境的儲存效能和價格需求。您可以根據業務需求變更雲端硬碟的類型。例如,建立雲端硬碟時選擇了SSD雲端硬碟,但後期需要更高的IOPS時,您可以將該雲端硬碟變更配置為ESSD雲端硬碟。本文介紹如何變更雲端硬碟類型。
索引
前提條件
已建立Kubernetes叢集,Kubernetes版本為v1.20及以上,且儲存外掛程式選擇為CSI。具體操作,請參見已建立Kubernetes託管版叢集。
storage-operator組件版本不低於v1.26.1-50a1499-aliyun。關於升級storage-operator組件的操作,請參見管理組件。
若您的叢集為ACK專有版叢集,則需要為叢集WorkerRole和MasterRole配置如下許可權。具體操作,請參見建立自訂權限原則。
說明ACK Pro版叢集無需配置許可權。
使用限制
不支援ESSD AutoPL雲端硬碟和ESSD PL-X雲端硬碟的變更配置。
關於變更雲端硬碟類型的限制條件,請參見限制條件。
注意事項
關於變更雲端硬碟類型的注意事項,請參見注意事項。
計費說明
關於變更雲端硬碟類型的計費說明,請參見計費說明。
使用方式
使用以下命令,修改叢集中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\"}"}}'
使用以下內容,在叢集中建立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
使用樣本
使用以下內容,建立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****
執行以下命令,部署一個使用雲端硬碟儲存的應用。
kubectl apply -f sts-test.yaml
執行以下命令,查看Pod狀態。
kubectl get pods sts-test-0
預期輸出:
NAME READY STATUS RESTARTS sts-test-0 1/1 Running 0
等待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。
使用以下內容,將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"
觀察CR status狀態變為
SUCCESS
,表明雲端硬碟變更配置任務已完成。執行以下命令,查看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
類型。