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

Container Service for Kubernetes:ACK での FlexVolume ディスクのオンラインスケールアウト

最終更新日:Sep 16, 2026

ワークロードが増加すると、Pod にマウントされたディスクボリュームの容量が不足することがあります。Container Service for Kubernetes (ACK) は、Kubernetes 1.16 以降で FlexVolume を使用したディスクボリュームのオンライン拡張をサポートしており、ほとんどの場合、Pod の再起動は不要です。このトピックでは、Pod が Running 状態を維持したまま拡張するシナリオと、Pod を再起動した後に拡張するシナリオの両方について説明します。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • クラスター用の kubeconfig ファイルと、クラスターへの接続用に設定された kubectl。「kubectl を使用した ACK クラスターへの接続」をご参照ください。

  • storageClassName パラメーターを含む永続ボリューム要求 (PVC) を介してマウントされる、動的にプロビジョニングされた永続ボリューム (PV)。

  • バージョン v1.14.8.109-5f88ade-aliyun 以降の FlexVolume プラグイン。ACK コンソールのクラスターコンポーネントページでアップグレードの有無を確認してください。

制限事項

ディスクボリュームを拡張する前に、以下の制約を確認してください。

制約 詳細
動的にプロビジョニングされた PV のみ ストレージクラスを使用して動的にプロビジョニングされた PV のみがオンラインで拡張できます。インラインボリュームやベーシックディスクをバックエンドとするボリュームは、サービス中断なしでは拡張できません。
最大ディスクサイズ 2,000 GiB 以下のディスクは、サービス中断なしで拡張できます。
Pod が Running 状態であること 拡張中、Pod は Running 状態を維持する必要があります。Running 状態でない場合は、代わりに再起動を伴う方法を使用してください。

ストレージクラスの要件

StorageClass には allowVolumeExpansion: true を設定する必要があります。ACK で作成された StorageClass ではこの値が自動的に設定されます。手動で作成した StorageClass の場合は、明示的に設定してください。

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alicloud-disk-available
provisioner: alicloud/disk
allowVolumeExpansion: true

データのバックアップ

拡張を実行する前にディスクスナップショットを作成し、拡張プロセス中のエラーによるデータ損失に備えてください。

RAM ロールへの ResizeDisk 権限の付与

ディスクボリュームを拡張する前に、クラスターのマスター RAM ロールに ResizeDisk 権限を付与してください。この権限がない場合、拡張リクエストは承認エラーを返します。

  1. ACK コンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター]をクリックします。

  3. クラスターを見つけ、[アクション] 列の [詳細] をクリックします。

  4. 左側のナビゲーションペインで、[クラスター情報] をクリックします。

  5. [クラスターリソース] タブをクリックし、次に マスター RAM ロール の横にあるハイパーリンクをクリックします。

  6. RAM コンソールで、ロールに ResizeDisk 権限を付与してください。詳細については、「カスタムポリシーのドキュメントと説明の変更」をご参照ください。

    resizedisk

FlexVolume を使用する ACK 専用クラスターまたは ACK マネージドクラスターの場合は、上記の手順 1〜4 に従い、 [マスター RAM ロール] の横にあるハイパーリンクをクリックしてください。

Pod を再起動せずにディスクボリュームを拡張

この方法は、Pod が Running 状態の場合に使用します。ディスクはサービス中断なしでオンラインでリサイズされます。

現在の状態の確認

  1. Pod が Running 状態であることを確認してください。

    kubectl get pod

    想定される出力:

    web-0   1/1   Running   0   42s
  2. Pod 内の現在のディスク使用率を確認してください。

    kubectl exec web-0 -- df /data

    想定される出力:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data

    現在のサイズは 20 GiB です。

  3. PVC がバインドされていることを確認し、現在の容量を確認してください。

    kubectl get pvc

    想定される出力:

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   20Gi       RWO            alicloud-disk-available   57s

ボリュームの拡張

  1. PVC にパッチを適用して、新しいストレージサイズをリクエストしてください。

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

    拡張が完了するまで約1分間待ってください。

拡張の確認

  1. PV が 30 GiB に更新されたことを確認してください。

    kubectl get pv d-wz9hpoifm43yn9zie6gl

    想定される出力:

    NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS              REASON   AGE
    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            Delete           Bound    default/disk-ssd-web-0   alicloud-disk-available            5m23s
  2. PVC が新しい容量を反映していることを確認してください。

    kubectl get pvc

    想定される出力:

    NAME             STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS              AGE
    disk-ssd-web-0   Bound    d-wz9hpoifm43yn9zie6gl   30Gi       RWO            alicloud-disk-available   5m10s
  3. Pod 内で新しいディスクサイズが認識されていることを確認してください。

    kubectl exec web-0 -- df /data

    想定される出力:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      30832548   45036   30771128    1%  /data

    ディスクボリュームは、ダウンタイムなしで 20 GiB から 30 GiB に拡張されました。

Pod を再起動してディスクボリュームを拡張

この方法は、Pod を再起動するまでファイルシステムが新しいサイズを反映しない場合や、Pod が Running 状態でない場合に使用します。

現在の状態の確認

  1. Pod のステータスを確認し、現在のディスクサイズを記録してください。

    kubectl get pod

    想定される出力:

    web-0   1/1   Running   0   42s
  2. Pod 内の現在のディスク使用率を確認してください。

    kubectl exec web-0 -- df /data

    想定される出力:

    Filesystem   1K-blocks    Used  Available  Use%  Mounted on
    /dev/vdb      20511312   45080   20449848    1%  /data
  3. PVC と PV がバインドされていることを確認してください。

    kubectl get pvc
    kubectl get pv

Pod の再スケジューリングの防止

  1. PV のゾーンラベルを検索してください。

    kubectl get pv d-wz9g2j5qbo37r2lamkg4 -oyaml | grep failure-domain.beta.kubernetes.io/zone

    想定される出力:

    failure-domain.beta.kubernetes.io/zone: cn-shenzhen-e
  2. Pod がスケジュールされないように、ゾーンラベルを無効な値に変更してください。

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e-nozone --overwrite

    想定される出力:

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled
  3. Pod を削除して再起動をトリガーしてください。ゾーンラベルがどのノードとも一致しないため、Pod は Pending 状態になります。

    kubectl delete pod web-0

    Pod が Pending 状態であることを確認してください。

    kubectl get pod

    想定される出力:

    web-0   0/1   Pending   0   27s

ボリュームの拡張

  1. PVC にパッチを適用して、新しいストレージサイズをリクエストしてください。

    kubectl patch pvc disk-ssd-web-0 -p '{"spec":{"resources":{"requests":{"storage":"30Gi"}}}}'

Pod の復元

  1. Pod が再びスケジュールされるように、元のゾーンラベルを復元してください。

    kubectl label pv d-wz9g2j5qbo37r2lamkg4 failure-domain.beta.kubernetes.io/zone=cn-shenzhen-e --overwrite

    想定される出力:

    persistentvolume/d-wz9g2j5qbo37r2lamkg4 labeled

    Podが再起動し、拡張が完了するまで約1分間待ってください。

拡張の確認

  1. Pod が Running 状態であることを確認してください。

    kubectl get pod

    想定される出力:

    web-0   1/1   Running   0   3m23s
  2. PVC が新しい容量を反映していることを確認してください。

    kubectl get pvc

    想定される出力:

    disk-ssd-web-0   Bound   d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   alicloud-disk-available   17m
  3. PV が新しい容量を反映していることを確認してください。

    kubectl get pv d-wz9g2j5qbo37r2lamkg4

    想定される出力:

    d-wz9g2j5qbo37r2lamkg4   30Gi   RWO   Delete   Bound   default/disk-ssd-web-0   alicloud-disk-available   17m
  4. Pod 内で新しいディスクサイズが認識されていることを確認してください。

    kubectl exec web-0 -- df /data

    想定される出力:

    /dev/vdb   30832548   45036   30771128   1%   /data

    ディスクボリュームは 20 GiB から 30 GiB に拡張されました。

関連トピック