Container Service for Kubernetes (ACK) の Container Storage Interface (CSI) プラグインを使用すると、実行中の Pod を再起動したり中断したりすることなく、永続ボリューム要求 (PVC) を変更することでクラウドディスクボリュームを拡張できます。これには、Kubernetes 1.16 以降が必要です。
前提条件
開始する前に、以下を確認してください。
PVC にバインドされた StorageClass には、
allowVolumeExpansion: trueが設定されています。ACK が提供する StorageClass では、これがデフォルトで設定されています。カスタム StorageClass の場合は、これを手動で設定する必要があります。StorageClass のプロパティは作成後に変更できません。必要に応じて、新しい StorageClass を作成してください。ディスクを使用している Pod が `実行中` 状態であること。
ディスクが基本ディスクではないこと。基本ディスクはオンライン拡張をサポートしていません。
クラスターが Kubernetes 1.16 以降を実行していること。アップグレードについては、「クラスターのアップグレード」をご参照ください。
ディスクがサイズ変更をサポートしていること。サポートされているディスクタイプについては、「ResizeDisk」をご参照ください。
サイズ変更の前にスナップショットを作成してデータをバックアップしてください。拡張が完了したら、不要な課金を避けるためにスナップショットを削除してください。詳細については、「ディスクスナップショットの使用」をご参照ください。
ACK 専用クラスターのみ: クラスターの RAM ロールに ResizeDisk 権限を付与します。ACK マネージドクラスターには、この権限がすでに付与されています。
ACK コンソールにログインし、[クラスター] をクリックします。
クラスター名をクリックし、次に左側ペインで [クラスター情報] をクリックします。
[基本情報] タブの [クラスターリソース] セクションで Master RAM Role を見つけ、リンクをクリックします。
RAM コンソールの [ロール] ページで、
ResizeDisk権限を追加します。詳細については、「カスタムポリシーのドキュメントおよび説明の変更」をご参照ください。

kubectl を使用したディスクボリュームの拡張
次の例では、「動的プロビジョニングされたディスクボリュームの作成」で作成したディスクボリュームを使用します。PVC を変更すると、CSI プラグインがトリガーされ、基盤となるディスクのサイズが変更され、ファイルシステムがオンラインで拡張されます。この間、Pod は実行され続けます。
クラスターに接続します。詳細については、「クラスターの kubeconfig ファイルを取得し、kubectl を使用してクラスターに接続する」または「Workbench または Cloud Shell で kubectl を使用して ACK クラスターに接続する」をご参照ください。
Pod が `実行中` 状態であることを確認します。
kubectl get pod -l app=nginx想定される出力:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23h現在のディスク使用率と PVC を確認します。
重要静的にプロビジョニングされたディスクボリュームの場合、PVC 内の
storageClassNameが空白ではなく、その名前の StorageClass がクラスター内に存在することを確認します。一致する StorageClass が存在しない場合は、既存のディスクの属性を持つ StorageClass を作成し、allowVolumeExpansion: trueを設定します。kubectl exec disk-test-0 -- df -h /data想定される出力:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /datakubectl get pvc想定される出力(PVC
disk-pvcは 20 GiB の容量でバインドされています):NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hStorageClass に
allowVolumeExpansion: trueが設定されていることを確認します。kubectl get sc alicloud-disk-wait-for-first-consumer -o yaml想定される出力:
allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: creationTimestamp: "2025-01-21T08:48:26Z" name: alicloud-disk-wait-for-first-consumer resourceVersion: "59936" uid: 5bdb798e-5888-40df-9f91-259ee8510f34 parameters: type: cloud_auto,cloud_essd,cloud_ssd provisioner: diskplugin.csi.alibabacloud.com reclaimPolicy: Retain volumeBindingMode: WaitForFirstConsumerPVC にパッチを適用して 30 GiB を要求します。
kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'1 分待ってから、新しい容量を確認します。
kubectl get pvc想定される出力:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hkubectl exec disk-test-0 -- df -h /data想定される出力:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 30G 24K 30G 1% /data
ACK コンソールを使用したディスクボリュームの拡張
ACK コンソールは、動的プロビジョニングされたディスクボリュームのみをサポートします。静的プロビジョニングされたディスクボリュームの場合は、kubectl を使用してください。
ACK コンソールにログインし、[クラスター] をクリックします。
クラスター名をクリックして、クラスター管理ページに移動します。
Pod の状態を確認し、PVC を見つけます。
左側のナビゲーションウィンドウで、[ワークロード] > [StatefulSet] を選択します。
アプリケーション名をクリックします。[Pod] タブで、Pod が `実行中` 状態であることを確認します。

Pod 名をクリックします。[ボリューム] タブで、Pod が使用している PVC をメモします。

StorageClass で拡張が有効になっていることを確認します。
左側のナビゲーションウィンドウで、ボリューム > ストレージクラス を選択します。
ディスクボリュームが使用している StorageClass を見つけ、[YAML で表示] をクリックします。
allowVolumeExpansion: trueが存在することを確認します。
PVC を拡張します。
左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。
PVC を見つけ、[拡張] をクリックします。
新しい容量を入力し、[上記操作を理解し、同意します] を選択して、[OK] をクリックします。

拡張が完了するのを待ち、PVC に新しい容量が表示されていることを確認します。
次のステップ
使用量がしきい値を超えたときにディスクボリュームを自動的に拡張するには、「ディスクボリュームの自動拡張 (パブリックプレビュー)」をご参照ください。
ディスクボリュームのエラーとソリューションについては、「ディスクボリュームに関するよくある質問」をご参照ください。