すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:サービス中断なしでディスク ボリュームを拡張する

最終更新日:Mar 05, 2025

ディスク ボリュームに十分なストレージ容量がない場合は、ディスクのサイズを変更して容量を拡張できます。 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 権限をクラスタに付与する必要はありません。

    1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

    2. [クラスタ] ページで、管理するクラスタを見つけ、その名前をクリックします。左側のペインで、[クラスタ情報] をクリックします。

    3. [基本情報] タブをクリックし、[クラスタ リソース] セクションの [master RAM ロール] の横にあるリンクをクリックします。

    4. RAM コンソールの [ロール] ページで、ResizeDisk 権限を追加します。

      詳細な手順については、「カスタム ポリシーのドキュメントと説明を変更する」をご参照ください。resizedisk

手順

動的にプロビジョニングされたディスク ボリュームが既存のアプリケーションにアタッチされている場合は、ポッドを中断することなく PVC を変更してディスク ボリュームを拡張できます。

説明

次の例では、「動的にプロビジョニングされたディスク ボリューム」で作成されたアプリケーションを使用して、ディスク ボリュームを拡張する方法について説明します。

kubectl を使用する

  1. クラスタに接続します。詳細については、「クラスタの kubeconfig ファイルを取得し、kubectl を使用してクラスタに接続する」または「Cloud Shell で kubectl を介して Kubernetes クラスタを管理する」をご参照ください。

  2. ディスク ボリュームを拡張する前に、ポッドとディスクの情報、および対応する PVC と StorageClass を表示します。

    1. ディスクがアタッチされているポッドに関する情報を表示し、ポッドが実行中状態であることを確認します。

      kubectl get pod -l app=nginx

      予期される出力:

      NAME          READY   STATUS    RESTARTS   AGE
      disk-test-0   1/1     Running   0          23h
    2. ディスクがマウントされているディレクトリのディスク使用量を表示します。

      kubectl exec disk-test-0 -- df -h /data

      予期される出力:

      Filesystem      Size  Used Avail Use% Mounted on
      /dev/vdb         20G   24K   20G   1% /data
    3. PVC を確認します。

      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>                 23h
    4. StorageClass と拡張が有効になっているかどうかを確認します。

      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
  3. PVC を変更し、ディスクのサイズを変更します。

    この例では、ディスクを 30 GiB に拡張する必要があります。コマンド例:

    kubectl patch pvc disk-pvc -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'
  4. 1 分間待ってから、ディスクのサイズが変更されたかどうかを確認します。

    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
    2. ディスクがマウントされているディレクトリのディスク使用量を表示します。

      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 を使用する」をご参照ください。

  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスタ] をクリックします。

  2. [クラスタ] ページで、管理するクラスタの名前をクリックして、クラスタ管理ページに移動します。

  3. ディスクがアタッチされているポッドが実行中状態であることを確認し、ポッドで使用されている PVC を表示します。

    1. クラスタ管理ページの左側のナビゲーションウィンドウで、[ワークロード] > [ステートフルセット] を選択します。

    2. 表示するアプリケーションの名前をクリックします。 [ポッド] タブで、ポッドが実行中状態であることを確認します。

      扩容-容器组

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

      扩容-pvc

  4. StorageClass と拡張が有効になっているかどうかを確認します。

    1. 詳細ページの左側のナビゲーションウィンドウで、[ボリューム] > [ストレージクラス] を選択します。

    2. ディスク ボリュームで使用されている StorageClass を見つけ、[YAML で表示] をクリックします。

    3. allowVolumeExpansion: true パラメーターが指定されているかどうかを確認します。

      扩容的SC

  5. PVC を変更してディスク ボリュームを拡張します。

    1. クラスタ管理ページの左側のナビゲーションウィンドウで、[ボリューム] > [永続ボリューム要求] を選択します。

    2. 管理する PVC を見つけ、[拡張] をクリックします。

    3. 表示されるダイアログボックスで、容量を入力し、[上記の操作を理解し、同意します] を選択して、[OK] をクリックします。

      在线扩容

    4. 拡張が完了するまで待ってから、PVC 容量が拡張されたかどうかを確認します。

関連情報