vSphere 名前空間 に割り当てられた vSphere ストレージ ポリシーにより、パーシステント ボリュームで使用可能なストレージ クラスのエディションが 2 つ生成されます。選択するエディションは、要件によって異なります。
使用可能なストレージ クラスの 2 つのエディション
vSphere ストレージ ポリシーを vSphere 名前空間 に割り当てると、一致する Kubernetes ストレージ クラスがその vSphere 名前空間 に作成されます。このストレージ クラスは、その名前空間でプロビジョニングされた各 TKG クラスタにレプリケートされます。その後、このストレージ クラスを使用して、クラスタ ワークロードに使用するパーシステント ストレージ ボリュームを作成できます。
kubectl describe storageclass tkg-storage-policy Name: tkg-storage-policy IsDefaultClass: No Annotations: cns.vmware.com/StoragePoolTypeHint=cns.vmware.com/vsan Provisioner: csi.vsphere.vmware.com Parameters: storagePolicyID=877b0f4b-b959-492a-b265-b4d460987b23 AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none>
*-latebinding
が付加され、バインド モードが「WaitForFirstConsumer」になっています。
kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE tkg-storage-policy csi.vsphere.vmware.com Delete Immediate true 2m43s tkg-storage-policy-latebinding csi.vsphere.vmware.com Delete WaitForFirstConsumer true 2m43s
latebinding
バージョンのストレージ クラスを使用します。詳細については、Kubernetes ドキュメントの
Volume Binding Modeを参照してください。
kubectl describe sc tkg-storage-policy Name: tkg-storage-policy IsDefaultClass: No Annotations: <none> Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=tkg-storage-policy AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none> kubectl describe sc tkg-storage-policy-latebinding Name: tkg-storage-policy-latebinding IsDefaultClass: No Annotations: <none> Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=tkg-storage-policy AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
ストレージ クラスへのパッチ適用
スーパーバイザー の TKG の場合、kubectl と YAML を使用してストレージ クラスを手動で作成することはできません。vSphere ストレージ ポリシー フレームワークを使用してストレージ クラスを作成し、vSphere 名前空間 に適用することのみが可能です。その結果、この vSphere 名前空間 でプロビジョニングされた TKG クラスタごとに 2 つの対応するストレージ クラスが作成されます。
kubectl と YAML を使用してストレージ クラスを手動で作成することはできませんが、kubectl を使用して既存のストレージ クラスを変更することはできます。この操作が必要になるのは、デフォルトのストレージ クラスを指定せずに TKG クラスタをプロビジョニングした後に、デフォルトのストレージ クラスを必要とする Helm または Tanzu パッケージを使用してアプリケーションをデプロイする必要が生じた場合です。
デフォルトのストレージを使用してまったく新しいクラスタを作成する代わりに、Kubernetes のドキュメントデフォルトの StorageClass の変更で説明されているように既存のストレージ クラスにパッチを適用して、default = true の注釈を追加することができます。
kubectl describe sc Name: gc-storage-profile IsDefaultClass: No Annotations: <none> Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=gc-storage-profile AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none> Name: gc-storage-profile-latebinding IsDefaultClass: No Annotations: <none> Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=gc-storage-profile AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
kubectl patch storageclass gc-storage-profile -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' storageclass.storage.k8s.io/gc-storage-profile patched
kubectl describe sc Name: gc-storage-profile IsDefaultClass: Yes Annotations: storageclass.kubernetes.io/is-default-class=true Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=gc-storage-profile AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: Immediate Events: <none> Name: gc-storage-profile-latebinding IsDefaultClass: No Annotations: <none> Provisioner: csi.vsphere.vmware.com Parameters: svStorageClass=gc-storage-profile AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>