Kubernetes ボリューム拡張機能を使用して、パーシステント ブロック ボリュームを作成後に拡張できます。TKG サービス クラスタは、オフラインおよびオンラインでのボリューム拡張をサポートしています。

パーシステント ボリュームの拡張について

デフォルトでは、TKG クラスタ環境に表示されるストレージ クラスについて、allowVolumeExpansiontrue に設定されています。このパラメータを使用して、オフライン ボリュームまたはオンライン ボリュームのサイズを変更できます。

ボリュームは、ノードまたはポッドに接続されていない場合はオフラインと見なされます。オンライン ボリュームは、ノードまたはポッドで使用可能なボリュームです。

ボリューム拡張機能のサポート レベルは、vSphere のバージョンによって異なります。拡張をサポートする適切なバージョンに vSphere 環境をアップグレードすると、以前のバージョンの vSphere で作成されたボリュームを拡張できます。

注: 拡張できるのは、パーシステント ブロック ボリュームのみです。現在、 vSphere IaaS control plane は、ReadWriteMany ボリュームのボリューム拡張をサポートしていません。
パーシステント ブロック ボリュームを拡張する場合は、次の点に注意してください。
  • ボリュームは、ストレージ割り当てで指定された制限まで拡張できます。vSphere IaaS control plane は、パーシステント ボリュームの要求オブジェクトに対する連続したサイズ変更要求をサポートします。
  • VMFS、vSAN、vSAN Direct、vVols、NFS など、すべてのタイプのデータストアでボリューム拡張がサポートされます。
  • デプロイまたはスタンドアローン ポッドのボリューム拡張を実行できます。
  • 静的にプロビジョニングされたボリュームにストレージ クラスが関連付けられている場合は、Tanzu Kubernetes Grid クラスタでそのボリュームのサイズを変更できます。
  • StatefulSet の一部として作成されたボリュームは拡張できません。
  • ボリュームをバッキングする仮想ディスクにスナップショットがある場合、そのサイズは変更できません。
  • vSphere IaaS control plane では、ツリー内または移行後のボリュームの拡張はサポートされません。

オンライン モードでのパーシステント ボリュームの拡張

オンライン ボリュームは、ノードまたはポッドで使用可能なボリュームです。DevOps エンジニアは、オンラインのパーシステント ブロック ボリュームを拡張できます。Tanzu Kubernetes Grid クラスタは、オンラインでのボリューム拡張をサポートしています。

  1. 次のコマンドを使用して、サイズ変更するパーシステント ボリュームの要求を探します。

    この例では、ボリュームで使用されているストレージのサイズは 1 Gi です。

    $ kubectl get pv,pvc,pod
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            Delete           Bound       default/block-pvc   block-sc                4m56s
     
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            block-sc       5m3s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          26s
  2. PVC にパッチを適用してサイズを増やします。たとえば、サイズを 2 Gi に増やします。
    この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
  3. PVC と PV の両方のサイズが増加したことを確認します。
    $ kubectl get pvc,pv,pod
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            block-sc       6m18s
     
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            Delete           Bound       default/block-pvc   block-sc                6m11s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          101s
  4. vSphere Client を使用して、新しいパーシステント ボリューム サイズを確認します。

    Tanzu Kubernetes Grid クラスタでのボリュームの健全性の監視を参照してください。

オフライン モードでのパーシステント ボリュームの拡張

ボリュームは、ノードまたはポッドに接続されていない場合はオフラインと見なされます。Tanzu Kubernetes Grid クラスタは、オフラインでのボリューム拡張をサポートしています。

  1. 既存のストレージ クラスに対するパーシステント ボリュームの要求 (PVC) を作成します。
    この例では、要求されるストレージのサイズは 1 Gi です。
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-block-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: example-block-sc
    kubectl apply -f example-block-pvc.yaml 
  2. PVC にパッチを適用してサイズを増やします。

    PVC がノードに接続されていない場合、またはポッドで使用されていない場合は、次のコマンドを使用して PVC にパッチを適用します。この例では、要求されるストレージの増加は 2 Gi です。

    この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
  3. ボリュームのサイズが増加したことを確認します。
    kubectl get pv
    NAME                                       CAPACITY ACCESS MODES RECLAIM POLICY STATUS   CLAIM                       STORAGECLASS           REASON AGE
    pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   2Gi           RWO         Delete     Bound    default/example-block-pvc   example-block-sc              6m44s
  4. PVC のサイズ変更が保留中であることを確認します。
    注: PVC がポッドによって使用されるまで、PVC のサイズは変更されません。
    次の例は、PVC サイズがポッドで使用されていないため変化していないことを示しています。 kubectl describe pvc を実行すると、PVC に FilesystemResizePending 条件が適用されます。ポッドで使用されると、そのサイズが変化します。
    kubectl get pvc
    NAME                STATUS VOLUME                                     CAPACITY ACCESS MODES   STORAGECLASS       AGE
    example-block-pvc   Bound  pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   1Gi           RWO       example-block-sc   6m57s
  5. PVC を使用するポッドを作成します。

    PVC がポッドで使用されると、ファイルシステムが拡張されます。

  6. PVC のサイズが変更されたことを確認します。
    kubectl get pvc
    NAME                STATUS VOLUME                                    CAPACITY ACCESS MODES STORAGECLASS     AGE
    example-block-pvc   Bound  pvc-24114458-9753-428e-9c90-9f568cb25788   2Gi         RWO      example-block-sc 2m12s
    FilesystemResizePending 条件は PVC から削除されています。ボリュームの拡張が完了しました。
  7. vSphere Client を使用して、新しいパーシステント ボリューム サイズを確認します。

    Tanzu Kubernetes Grid クラスタでのボリュームの健全性の監視を参照してください。