ディスク ボリュームに十分なストレージ容量がない場合は、ディスクのサイズを変更して容量を拡張できます。 Kubernetes 1.16 以降を実行する Container Service for Kubernetes (ACK) クラスタの Container Storage Interface (CSI) プラグインを使用することで、サービスを中断することなくディスク ボリュームを拡張できます。このトピックでは、サービスを中断することなくディスク ボリュームを拡張する方法について説明します。
シナリオ
この例では、永続ボリューム要求 (PVC) を変更することで、ディスク ボリュームを拡張できます。次のセクションでは、この方法を使用できるシナリオについて説明します。
ディスクの永続ボリューム (PV) にバインドされている PVC は StorageClass に関連付けられており、StorageClass に
allowVolumeExpansion: trueパラメーターが指定されています。説明デフォルトでは、ACK が提供する StorageClass に
allowVolumeExpansion: trueパラメーターが指定されています。作成する StorageClass にはこのパラメーターを指定する必要があります。 StorageClass のプロパティは変更できません。 StorageClass を作成することのみ可能です。ディスクがアタッチされているアプリケーション ポッドは、実行中状態である必要があります。
ディスクが基本ディスクの場合、この方法でディスク ボリュームを拡張することはできません。
クラスタの Kubernetes バージョンが 1.16 より前の場合、この方法を使用してディスク ボリュームを拡張することはできません。クラスタの Kubernetes バージョンをアップグレードする方法の詳細については、「クラスタをアップグレードする」をご参照ください。
サイズ変更可能なディスクのディスク ボリュームのみを拡張できます。詳細については、「ResizeDisk」をご参照ください。
準備
ディスクのスナップショットが作成されます。
重要拡張プロセス中の誤操作によるデータ損失を防ぐため、ディスクのサイズを変更する前に、ディスクのスナップショットを作成してディスク データをバックアップすることをお勧めします。拡張が完了したら、スナップショットを削除して不要な料金が発生しないようにします。詳細については、「ディスク スナップショットを使用する」をご参照ください。
クラスタが ACK 専用クラスター の場合は、クラスタに割り当てられた RAM ロールに ResizeDisk 権限を付与します。
説明ACK マネージドクラスター を使用している場合は、ResizeDisk 権限をクラスタに付与する必要はありません。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のペインで、[クラスタ情報] をクリックします。
[基本情報] タブをクリックし、[クラスタ リソース] セクションの [master RAM ロール] の横にあるリンクをクリックします。
RAM コンソールの [ロール] ページで、ResizeDisk 権限を追加します。
詳細な手順については、「カスタム ポリシーのドキュメントと説明を変更する」をご参照ください。

手順
動的にプロビジョニングされたディスク ボリュームが既存のアプリケーションにアタッチされている場合は、ポッドを中断することなく PVC を変更してディスク ボリュームを拡張できます。
次の例では、「動的にプロビジョニングされたディスク ボリューム」で作成されたアプリケーションを使用して、ディスク ボリュームを拡張する方法について説明します。
kubectl を使用する
クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」または「Cloud Shell で kubectl を介して Kubernetes クラスタを管理する」をご参照ください。
ディスク ボリュームを拡張する前に、ポッドとディスクの情報、および対応する PVC と StorageClass を表示します。
ディスクがアタッチされているポッドに関する情報を表示し、ポッドが実行中状態であることを確認します。
kubectl get pod -l app=nginx予期される出力:
NAME READY STATUS RESTARTS AGE disk-test-0 1/1 Running 0 23hディスクがマウントされているディレクトリのディスク使用量を表示します。
kubectl exec disk-test-0 -- df -h /data予期される出力:
Filesystem Size Used Avail Use% Mounted on /dev/vdb 20G 24K 20G 1% /dataPVC を確認します。
kubectl get pvc次の例では、PVC 名は
dik-pvcで、PVC がバインドされているディスクの ID はd-uf6axyb1er071h6o****で、容量は 20 GiB です。 PVC に関連付けられている StorageClass はalicloud-disk-wait-for-first-consumerです。重要静的にプロビジョニングされたディスク ボリュームの場合、PVC の
storageClassNameパラメーターが空ではなく、同じ名前の StorageClass がクラスタに存在することを確認する必要があります。同じ名前の StorageClass がクラスタに存在しない場合は、既存のディスク ボリュームの属性に基づいて StorageClass を作成し、allowVolumeExpansion: trueパラメーターを指定する必要があります。NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 20Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hStorageClass と拡張が有効になっているかどうかを確認します。
kubectl get sc alicloud-disk-wait-for-first-consumer -o yaml次の予期される応答が返されます。
allowVolumeExpansion: trueパラメーターは、拡張が有効になっていることを示します。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: WaitForFirstConsumer
PVC を変更し、ディスクのサイズを変更します。
この例では、ディスクを 30 GiB に拡張する必要があります。コマンド例:
kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'1 分間待ってから、ディスクのサイズが変更されたかどうかを確認します。
PVC を確認します。
kubectl get pvcコマンド出力は、ディスク サイズが 30 GiB に増加したことを示しています。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE disk-pvc Bound d-uf6axyb1er071h6o**** 30Gi RWO alicloud-disk-wait-for-first-consumer <unset> 23hディスクがマウントされているディレクトリのディスク使用量を表示します。
kubectl 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 コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。
[クラスタ] ページで、管理するクラスタの名前をクリックして、クラスタ管理ページに移動します。
ディスクがアタッチされているポッドが実行中状態であることを確認し、ポッドで使用されている PVC を表示します。
クラスタ管理ページの左側のナビゲーションウィンドウで、 を選択します。
表示するアプリケーションの名前をクリックします。 [ポッド] タブで、ポッドが実行中状態であることを確認します。

ポッドの名前をクリックします。 [ボリューム] タブで、ポッドで使用されている PVC を表示します。

StorageClass と拡張が有効になっているかどうかを確認します。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
ディスク ボリュームで使用されている StorageClass を見つけ、[YAML で表示] をクリックします。
allowVolumeExpansion: trueパラメーターが指定されているかどうかを確認します。
PVC を変更してディスク ボリュームを拡張します。
クラスタ管理ページの左側のナビゲーションウィンドウで、 を選択します。
管理する PVC を見つけ、[拡張] をクリックします。
表示されるダイアログボックスで、容量を入力し、[上記の操作を理解し、同意します] を選択して、[OK] をクリックします。

拡張が完了するまで待ってから、PVC 容量が拡張されたかどうかを確認します。
関連情報
ディスク ボリュームの使用量が特定のしきい値を超えたときにディスク ボリュームを自動的に拡張する方法の詳細については、「ディスク ボリュームを自動的に拡張する (パブリックプレビュー)」をご参照ください。
ディスク ボリュームの使用時に発生するエラーの詳細については、「ディスク ボリュームに関するよくある質問」をご参照ください。