DevOps エンジニアは、パーシステント ブロック ボリュームの作成後に、このボリュームを拡張できます。vSphere IaaS control plane では、オフライン ボリュームとオンライン ボリュームの拡張は、スーパーバイザーTanzu Kubernetes Grid の両方のタイプのクラスタでサポートされます。

注: 拡張できるのは、パーシステント ブロック ボリュームのみです。現在、 vSphere IaaS control plane は、ReadWriteMany ボリュームのボリューム拡張をサポートしていません。

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

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

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

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

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

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

前提条件

vSphere 環境がオフライン ボリュームの拡張をサポートする適切なバージョンにアップグレードされていることを確認します。

手順

  1. ストレージ クラスを使用して、パーシステント ボリュームの要求 (PVC) を作成します。
    1. 例として、次の YAML マニフェストを使用して PVC を定義します。
      この例では、要求されるストレージのサイズは 1 Gi です。
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: example-block-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: example-block-sc
    2. Kubernetes クラスタに PVC を適用します。
      kubectl apply -f example-block-pvc.yaml 
  2. PVC にパッチを適用してサイズを増やします。
    PVC がノードに接続されていない場合、またはポッドで使用されていない場合は、次のコマンドを使用して PVC にパッチを適用します。この例では、要求されるストレージの増加は 2 Gi です。
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。
  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
    注: PVC がポッドによって使用されるまで、PVC のサイズは変更されません。
    次の例は、PVC のサイズが変更されていないことを示しています。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
  4. PVC を使用するポッドを作成します。
    PVC がポッドで使用されると、ファイルシステムが拡張されます。
  5. 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 から削除されています。ボリュームの拡張が完了しました。

次のタスク

vSphere 管理者は、 vSphere Client で新しいボリューム サイズを確認できます。 vSphere Client のパーシステント ボリュームの監視を参照してください。

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

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

前提条件

vSphere 環境がオンライン ボリュームの拡張をサポートする適切なバージョンにアップグレードされていることを確認します。

手順

  1. サイズを変更するパーシステント ボリュームの要求を見つけます。
    $ 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

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

  2. PVC にパッチを適用してサイズを増やします。
    たとえば、サイズを 2 Gi に増やします。
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
    この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。
  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

次のタスク

vSphere 管理者は、 vSphere Client で新しいボリューム サイズを確認できます。 vSphere Client のパーシステント ボリュームの監視を参照してください。