Container Service for Kubernetes (ACK) を使用すると、さまざまなシナリオのストレージ要件と予算に基づいて、ACK クラスターに複数カテゴリのクラウドディスクを作成できます。ACK では、進化するビジネス要件に合わせてディスクカテゴリを変更することもできます。たとえば、最初にアプリケーション用に標準 SSD を作成したが、より高い IOPS が必要になった場合、ディスクカテゴリを標準 SSD から企業向け SSD (ESSD) にスペックアップできます。
前提条件
クラスターが Kubernetes 1.20 以降を使用しており、Container Storage Interface (CSI) プラグインがインストールされていること。
クラスターをスペックアップする方法の詳細については、「クラスターを手動でスペックアップする」をご参照ください。
クラスターに storage-operator 1.26.1-50a1499-aliyun 以降がインストールされていること。
説明デフォルトでは、storage-operator コンポーネントはクラスターにインストールされています。ACK コンソールのクラスター詳細ページに移動できます。クラスター詳細ページの左側のナビゲーションウィンドウで、 を選択し、[ストレージ] タブをクリックして、storage-operator がインストールされているかどうかを確認し、そのバージョンを表示します。詳細については、「storage-operator コンポーネントの管理」をご参照ください。
クラスターが ACK 専用クラスターの場合、クラスターのワーカー Resource Access Management (RAM) ロールとマスター RAM ロールに ModifyDiskSpec 操作を呼び出す権限があることを確認する必要があります。詳細については、「カスタムポリシーの作成」をご参照ください。
この権限付与は ACK マネージドクラスターには必要ありません。
注意事項
ベーシックディスクとエフェメラルディスクは、他のディスクカテゴリに変更できません。
スペックアップとスペックダウンは、次のシナリオでサポートされています。
企業向け SSD (ESSD)
これらはローカル冗長ディスクです。
パフォーマンスレベル (PL) 0 の ESSD は、次のいずれかのタイプに直接変更できます。
ESSD PL1、PL2、または PL3
ESSD AutoPL ディスク
リージョン ESSD
ディスクをリージョン ESSD に変更できるのは、データディスクの場合のみです。
PL1、PL2、および PL3 ESSD の変更は、課金方法によって異なります。
従量課金ディスクの場合:
PL1、PL2、および PL3 のパフォーマンスレベル間で変更できます。
ディスクを ESSD AutoPL ディスクに直接変更できます。
PL1 ESSD のみリージョン ESSD に直接変更できます。
ディスクをリージョン ESSD に変更できるのは、データディスクの場合のみです。
サブスクリプションディスクの場合、より高いパフォーマンスレベルにのみスペックアップできます。
ESSD PL1 を ESSD PL2 に変更します。
ESSD PL1 を ESSD PL3 に変更します。
ESSD PL2 を ESSD PL3 に変更します。
ESSD PL1 を ESSD AutoPL ディスクに変更します。
ESSD PL1 データディスクをリージョン ESSD に変更します。
ESSD AutoPL ディスク
これらはローカル冗長ディスクです。次のいずれかのタイプに直接変更できます。
ESSD AutoPL ディスク
変更中に、プロビジョニングされたパフォーマンスは変更できますが、パフォーマンスバーストは変更できません。変更完了後にパフォーマンスバーストを調整できます。
リージョン ESSD
リージョン ESSD に変更する場合、プロビジョニングされたパフォーマンスとパフォーマンスバーストを無効にする必要があります。
リージョン ESSD と ESSD AutoPL ディスクではパフォーマンス制限が異なります。プロビジョニングされたパフォーマンスとパフォーマンスバーストを無効にすると、サービスに影響が出る可能性があります。続行する前に、ブロックストレージのパフォーマンスに関するドキュメントを確認し、新しい構成がビジネスニーズを満たしていることを確認してください。
ディスクをリージョン ESSD に変更できるのは、データディスクの場合のみです。
リージョン ESSD
これらはゾーン冗長ディスクです。
変更するゾーンを選択します。
ディスクのステータスが [使用中] の場合、このオプションは利用できません (グレー表示)。新しいローカル冗長ディスクの AZ は、アタッチされているインスタンスの AZ と同じになります。
ディスクのステータスが [アタッチされていません] の場合、新しいローカル冗長ディスクは、選択した AZ のインスタンスにのみアタッチできます。
[新しいディスクカテゴリ] を選択します。
リージョン ESSD は、次のいずれかに直接変更できます。
ESSD PL1、PL2、または PL3
ESSD AutoPL ディスク
ESSD Entry ディスク
これらはローカル冗長ディスクです。次のいずれかのタイプに直接変更できます。
ESSD PL0、PL1、PL2、または PL3
ESSD AutoPL ディスク
ゾーン冗長 ESSD
ディスクをゾーン冗長 ESSD に変更できるのは、データディスクとして使用される場合のみです。
Ultra ディスク
これらはローカル冗長ディスクです。次のいずれかのタイプに直接変更できます。
標準 SSD
ESSD Entry ディスク
これらのディスクは、汎用 (U シリーズ) および e、エコノミー型インスタンスファミリーのインスタンスタイプにのみアタッチできます。
ESSD PL0、PL1、PL2、または PL3
ESSD AutoPL ディスク
標準 SSD
これらはローカル冗長ディスクです。次のいずれかのタイプに直接変更できます。
ESSD PL1、PL2、または PL3
ESSD AutoPL ディスク
説明ディスクカテゴリの変更にリージョン企業向け SSD (ESSD) が含まれる場合、ボリュームのアフィニティ設定は変更できません。たとえば、ESSD をリージョン ESSD に変更した後も、そのディスクを使用する Pod は他のゾーンにスケジュールできません。
クラウドディスクをアタッチできる ECS インスタンスタイプは、ディスクカテゴリによって異なります。ボリュームのディスクカテゴリを変更するときは、新しいディスクカテゴリが、ボリュームがマウントされている Pod をホストするノードの ECS インスタンスタイプでサポートされていることを確認してください。ディスクカテゴリと ECS インスタンスタイプ間のマッチング ルールに関する詳細については、「インスタンスファミリーの概要」をご参照ください。
ボリュームとしてマウントできるのは、従量課金ディスクのみです。ボリュームのディスクカテゴリを変更すると、ディスクは新しいディスクカテゴリの課金ルールに基づいて課金されます。
詳細については、「制限」をご参照ください。
ステップ 1: ディスクカテゴリの変更を有効にするための 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\"}"}}'ステップ 2: ディスクカテゴリの変更を実行するためのカスタムリソースの作成
ビジネスへの影響を最小限に抑えるため、オフピーク時にディスクカテゴリまたはパフォーマンスレベルを変更してください。
StatefulSet を作成します。
クラウドディスクがマウントされた StatefulSet がクラスターに既に存在する場合は、このステップをスキップできます。
次のテンプレートを使用して、StatefulSet.yaml という名前のファイルを作成します。
この YAML ファイルは、Pod をプロビジョニングする StatefulSet を作成するために使用されます。Pod には 40 GiB の PL1 ESSD がマウントされています。
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: 40GiStatefulSet を作成します。
kubectl create -f StatefulSet.yamlPod のデプロイメントを表示します。
kubectl get pod -l app=nginx期待される出力:
NAME READY STATUS RESTARTS AGE nginx-diskspec-0 1/1 Running 0 4m4sStatefulSet で使用される永続ボリューム要求 (PVC) に関する情報を表示し、PVC にバインドされている永続ボリューム (PV) の名前を取得します。
kubectl get pvc pvc-disk-nginx-diskspec-0次の出力は、バインドされた PV の名前が
d-uf6ijdcp3aeoi82w****であり、VOLUME列に表示されていることを示しています。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-disk-nginx-diskspec-0 Bound d-uf6ijdcp3aeoi82w**** 40Gi RWO alicloud-disk-essd <unset> 5m6s
PV のディスクカテゴリを表示します。
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'出力で
cloud_essd.PL1が返されます。これは、PV が PL1 ESSD のマウントに使用されていることを示します。{"csi.alibabacloud.com/disktype":"cloud_essd.PL1"}ディスクカテゴリの変更を実行するためのカスタムリソースを作成します。
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"パラメーター
説明
operationTypeDISKUPGRADE の値は、現在の操作がクラウドディスクのスペックアップ/スペックダウンであることを示します。
pvNames管理する PV。複数の PV はコンマ (,) で区切ります。例:
"disk-1***,disk-2***,disk-3***"。desiredDiskType新しいディスクカテゴリ。注意事項セクションの説明に基づいて値を指定します。
cloud_auto: ESSD AutoPL ディスクcloud_essd.PL0: PL0 ESSDcloud_essd.PL1: PL1 ESSDcloud_essd.PL2: PL2 ESSDcloud_essd.PL3: PL3 ESSDcloud_ssd: 標準 SSD
カスタムリソースを作成します。
kubectl create -f cr.yaml
ディスクカテゴリが変更されたことを確認します。
カスタムリソースのステータスをクエリして、ディスクカテゴリが変更されたかどうかを確認します。
kubectl get ContainerStorageOperator default -o yaml出力の
statusフィールドを確認します。期待される出力:status: message: [] process: 100% status: SUCCESSPV のラベルをクエリして、ディスクカテゴリが ESSD AutoPL ディスクに変更されたかどうかを確認します。
kubectl get pv d-uf6ijdcp3aeoi82w**** -o=jsonpath='{.metadata.labels}'期待される出力:
{"csi.alibabacloud.com/disktype":"cloud_auto"}