Kubernetes ボリューム拡張機能を使用して、パーシステント ブロック ボリュームを作成後に拡張できます。TKG サービス クラスタは、オフラインおよびオンラインでのボリューム拡張をサポートしています。
パーシステント ボリュームの拡張について
デフォルトでは、TKG クラスタ環境に表示されるストレージ クラスについて、allowVolumeExpansion
が true
に設定されています。このパラメータを使用して、オフライン ボリュームまたはオンライン ボリュームのサイズを変更できます。
ボリュームは、ノードまたはポッドに接続されていない場合はオフラインと見なされます。オンライン ボリュームは、ノードまたはポッドで使用可能なボリュームです。
ボリューム拡張機能のサポート レベルは、vSphere のバージョンによって異なります。拡張をサポートする適切なバージョンに vSphere 環境をアップグレードすると、以前のバージョンの vSphere で作成されたボリュームを拡張できます。
- ボリュームは、ストレージ割り当てで指定された制限まで拡張できます。vSphere IaaS control plane は、パーシステント ボリュームの要求オブジェクトに対する連続したサイズ変更要求をサポートします。
- VMFS、vSAN、vSAN Direct、vVols、NFS など、すべてのタイプのデータストアでボリューム拡張がサポートされます。
- デプロイまたはスタンドアローン ポッドのボリューム拡張を実行できます。
- 静的にプロビジョニングされたボリュームにストレージ クラスが関連付けられている場合は、Tanzu Kubernetes Grid クラスタでそのボリュームのサイズを変更できます。
- StatefulSet の一部として作成されたボリュームは拡張できません。
- ボリュームをバッキングする仮想ディスクにスナップショットがある場合、そのサイズは変更できません。
- vSphere IaaS control plane では、ツリー内または移行後のボリュームの拡張はサポートされません。
オンライン モードでのパーシステント ボリュームの拡張
オンライン ボリュームは、ノードまたはポッドで使用可能なボリュームです。DevOps エンジニアは、オンラインのパーシステント ブロック ボリュームを拡張できます。Tanzu Kubernetes Grid クラスタは、オンラインでのボリューム拡張をサポートしています。
- 次のコマンドを使用して、サイズ変更するパーシステント ボリュームの要求を探します。
この例では、ボリュームで使用されているストレージのサイズは 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
- PVC にパッチを適用してサイズを増やします。たとえば、サイズを 2 Gi に増やします。
この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。
$ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' persistentvolumeclaim/block-pvc edited
- 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 Client を使用して、新しいパーシステント ボリューム サイズを確認します。
Tanzu Kubernetes Grid クラスタでのボリュームの健全性の監視を参照してください。
オフライン モードでのパーシステント ボリュームの拡張
ボリュームは、ノードまたはポッドに接続されていない場合はオフラインと見なされます。Tanzu Kubernetes Grid クラスタは、オフラインでのボリューム拡張をサポートしています。
- 既存のストレージ クラスに対するパーシステント ボリュームの要求 (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
- PVC にパッチを適用してサイズを増やします。
PVC がノードに接続されていない場合、またはポッドで使用されていない場合は、次のコマンドを使用して PVC にパッチを適用します。この例では、要求されるストレージの増加は 2 Gi です。
この操作により、PVC に関連付けられているボリュームで拡張がトリガされます。kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
- ボリュームのサイズが増加したことを確認します。
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 サイズがポッドで使用されていないため変化していないことを示しています。
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
- PVC を使用するポッドを作成します。
PVC がポッドで使用されると、ファイルシステムが拡張されます。
- 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 Client を使用して、新しいパーシステント ボリューム サイズを確認します。
Tanzu Kubernetes Grid クラスタでのボリュームの健全性の監視を参照してください。