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託管叢集無需進行此授權。
注意事項
普通雲端硬碟、彈性臨時盤不支援變更類型。
支援變更配置的情況如下:
高效雲端硬碟
支援變更配置到:
SSD雲端硬碟
ESSD Entry雲端硬碟
說明僅通用算力型(U執行個體)和經濟型執行個體規格類型系列e支援掛載ESSD Entry雲端硬碟。
ESSD雲端硬碟PL0、PL1、PL2或PL3
ESSD AutoPL雲端硬碟
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 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實現雲端硬碟變更配置
為了減少變更配置操作對您業務帶來的影響,請您在業務低峰期進行變更配置。
建立用於測試雲端盤變更配置的StatefulSet。
如果您已有掛載了雲端硬碟的StatefulSet,可跳過該步驟。
使用以下內容,建立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建立StatefulSet。
kubectl create -f StatefulSet.yaml查看Pod部署情況。
kubectl get pod -l app=nginx預期輸出:
NAME READY STATUS RESTARTS AGE nginx-diskspec-0 1/1 Running 0 4m4s查看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,執行雲端硬碟變更配置操作。
建立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雲端硬碟PL0cloud_essd.PL1:ESSD雲端硬碟PL1cloud_essd.PL2:ESSD雲端硬碟PL2cloud_essd.PL3:ESSD雲端硬碟PL3cloud_ssd:SSD雲端硬碟
建立CR。
kubectl create -f cr.yaml
確認變更後的雲端硬碟類型。
觀察CR Status,確認變更配置操作成功。
kubectl get ContainerStorageOperator default -o yaml在返回的
status欄位中確認狀態,樣本如下:status: message: [] process: 100% status: SUCCESS查看PV的Label,確認已經變更配置到ESSD AutoPL雲端硬碟。
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'預期輸出:
{"csi.alibabacloud.com/disktype":"cloud_auto"}