Una directiva de almacenamiento de vSphere asignada a un espacio de nombres de vSphere genera dos ediciones de una clase de almacenamiento disponibles para su uso con volúmenes persistentes. La edición para elegir depende de los requisitos que usted establezca.
Dos ediciones de una clase de almacenamiento disponible para su uso
Cuando se asigna una directiva de almacenamiento de vSphere a un espacio de nombres de vSphere, el sistema crea una clase de almacenamiento de Kubernetes coincidente en ese espacio de nombres de vSphere. Esta clase de almacenamiento se replica en cada clúster de TKG aprovisionado en ese espacio de nombres. A continuación, la clase de almacenamiento está disponible para crear volúmenes de almacenamiento persistentes para las cargas de trabajo de clúster.
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
anexado al nombre y "WaitForFirstConsumer" como modo de enlace.
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 clase de almacenamiento cuando desee aprovisionar un volumen persistente después de que el programador de Kubernetes haya seleccionado el recurso informático. Para obtener más información, consulte
Modo de enlace de volumen en la documentación 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>
Aplicar revisiones a una clase de almacenamiento
Para TKG en Supervisor, no se puede crear una clase de almacenamiento manualmente mediante kubectl y YAML. Solo puede crear una clase de almacenamiento mediante el marco de directivas de almacenamiento de vSphere y aplicarla a un espacio de nombres de vSphere. El resultado es dos clases de almacenamiento correspondientes en cada clúster de TKG aprovisionado en ese espacio de nombres de vSphere.
Aunque no puede crear una clase de almacenamiento manualmente mediante kubectl y YAML, puede modificar una clase de almacenamiento existente mediante kubectl. Es posible que sea necesario hacerlo si aprovisionó un clúster de TKG sin especificar una clase de almacenamiento predeterminada y ahora desea implementar una aplicación mediante Helm o un paquete de Tanzu que requiere una clase de almacenamiento predeterminada.
En lugar de crear un clúster totalmente nuevo con almacenamiento predeterminado, puede aplicar revisiones a la clase de almacenamiento existente y agregar la anotación default = true, como se describe en la documentación de Kubernetes: Cambiar el objeto StorageClass predeterminado.
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>