Container Service for Kubernetes (ACK) では、ストレージ要件と予算に基づいて、Kubernetesクラスターに複数のタイプのクラウドディスクを作成できます。 ACKを使用すると、変化するビジネス要件を満たすようにクラウドディスクのタイプを変更することもできます。 アプリケーション用の標準SSDを作成したとします。 アプリケーションでより高いIOPSが必要な場合は、ディスクのタイプを標準SSDからエンタープライズSSD (ESSD) にアップグレードできます。 このトピックでは、クラウドディスクのタイプを変更する方法について説明します。
目次
前提条件
Kubernetes 1.20以降を実行するACKクラスターが作成されます。 Container Storage Interface (CSI) プラグインがボリュームプラグインとして使用されます。 詳細については、「ACK管理クラスターの作成」をご参照ください。
storage-operatorコンポーネントのバージョンはv1.26.1-50a1499-aliyun以降です。 storage-operatorの更新方法の詳細については、「コンポーネントの管理」をご参照ください。
ACK専用クラスターを使用する場合は、ワーカーロールとマスターロールに次の権限を付与する必要があります。 詳細については、「カスタムポリシーの作成」をご参照ください。
説明ACK Proクラスターを使用する場合、上記のRAM権限を付与する必要はありません。
制限事項
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\"}"}}'
次のコンテンツに基づいてContainerStorageOperator CustomResource (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
管理する永続ボリューム (PV) 。 複数のPVはコンマ (,) で区切ります。 例: "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
次のコマンドを実行して、ポッドのステータスを照会します。
kubectl get pods sts-test-0
期待される出力:
NAME READY STATUS RESTARTS sts-test-0 1/1 Running 0
ポッドが [実行中] 状態になるまで待ち、次のコマンドを実行してポッドにマウントされているPVの名前を照会します。
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
出力は、disk-1aaf007e-36ac-4985-acf0-fc3c85de0e08 PVがポッドに取り付けられていることを示します。
PV名をパラメーターとして、CRを作成および作成する必要がある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が
SUCCESS
状態になるまで待つ。 これは、ディスクタイプが変更されたことを示します。次のコマンドを実行して、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
に変更されたことを示します。