Un criterio di storage di vSphere assegnato a uno Spazio dei nomi vSphere implica due edizioni di una classe di storage disponibili per l'uso con volumi persistenti. L'edizione scelta dipende dalle proprie esigenze.
Due edizioni di una classe di storage disponibili per l'uso
Quando si assegna un criterio di storage vSphere a Spazio dei nomi vSphere, il sistema crea una classe di storage Kubernetes corrispondente in tale Spazio dei nomi vSphere. Questa classe di storage viene replicata in ogni cluster TKG con provisioning in tale spazio dei nomi. La classe di storage è quindi disponibile per creare volumi di storage persistenti per i carichi di lavoro del 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
aggiunto al nome e "WaitForFirstConsumer" come modalità di binding.
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
della classe di storage quando si desidera eseguire il provisioning di un volume persistente dopo che la risorsa di elaborazione è stata selezionata dall'utilità di pianificazione di Kubernetes. Per ulteriori informazioni, vedere
Modalità di binding del volume nella documentazione di 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>
Installare le patch a una classe di storage
Per TKG su Supervisore, non è possibile creare manualmente una classe di storage utilizzando kubectl e file YAML. È possibile creare una classe di storage solo utilizzando il framework del criterio di storage di vSphere e quindi applicarla a uno Spazio dei nomi vSphere. Il risultato è due classi di storage corrispondenti in ciascun cluster TKG di cui è stato eseguito il provisioning in tale Spazio dei nomi vSphere.
Anche se non è possibile creare manualmente una classe di storage utilizzando kubectl e file YAML, è possibile modificare una classe di storage esistente utilizzando kubectl. Questa operazione può essere necessaria se è stato eseguito il provisioning di un cluster TKG senza specificare una classe di storage predefinita e ora si desidera distribuire un'applicazione utilizzando Helm o un pacchetto Tanzu che richiede una classe di storage predefinita.
Anziché creare un cluster completamente nuovo con lo storage predefinito, è possibile installare le patch alla classe di storage esistente e aggiungere l'annotazione default = true come descritto nella documentazione di Kubernetes: Modifica della StorageClass predefinita.
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>