Une stratégie de stockage vSphere attribuée à un Espace de noms vSphere génère deux éditions d'une classe de stockage utilisable avec des volumes persistants. L'édition que vous choisissez dépend de vos besoins.
Deux éditions d'une classe de stockage disponibles
Lorsque vous attribuez une stratégie de stockage vSphere à un Espace de noms vSphere, le système crée une classe de stockage Kubernetes correspondante dans cet Espace de noms vSphere. Cette classe de stockage est répliquée sur chaque cluster TKG provisionné dans cet espace de noms. La classe de stockage est ensuite disponible pour créer des volumes de stockage persistants pour les charges de travail de cluster.
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
ajouté au nom et « WaitForFirstConsumer » comme mode de liaison.
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
de la classe de stockage lorsque vous souhaitez provisionner un volume persistant après que le calcul a été sélectionné par le planificateur Kubernetes. Pour plus d'informations, reportez-vous à la section
Mode de liaison des volumes dans la documentation de Kubernetes.
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>
Correction d'une classe de stockage
Pour TKG sur le Superviseur, vous ne pouvez pas créer manuellement une classe de stockage à l'aide de kubectl et de YAML. Vous pouvez uniquement créer une classe de stockage à l'aide de l'infrastructure de stratégie de stockage vSphere, puis l'appliquer à un Espace de noms vSphere. Il en résulte deux classes de stockage correspondantes sur chaque cluster TKG provisionné dans cet Espace de noms vSphere.
Bien que vous ne puissiez pas créer manuellement une classe de stockage à l'aide de kubectl et de YAML, vous pouvez modifier une classe de stockage existante à l'aide de kubectl. Cela peut être nécessaire si vous avez provisionné un cluster TKG sans spécifier de classe de stockage par défaut et que vous souhaitez maintenant déployer une application à l'aide de Helm ou d'un module Tanzu qui nécessite une classe de stockage par défaut.
Au lieu de créer un cluster entièrement nouveau avec un stockage par défaut, vous pouvez corriger la classe de stockage existante et ajouter l'annotation default = true comme décrit dans la documentation de Kubernetes : Modifier la classe de stockage par défaut.
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>