Uma política de armazenamento vSphere atribuída a um vSphere Namespace produz duas edições de uma classe de armazenamento disponível para uso com volumes permanentes. A edição escolhida depende dos seus requisitos.
Duas edições de uma classe de armazenamento disponíveis para uso
Quando você atribui uma política de armazenamento vSphere a um vSphere Namespace, o sistema cria uma classe de armazenamento Kubernetes correspondente nesse vSphere Namespace. Essa classe de armazenamento é replicada para cada cluster TKG provisionado nesse namespace. A classe de armazenamento fica então disponível para criar volumes de armazenamento persistentes para cargas de trabalho 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
anexado ao nome e "WaitForFirstConsumer" como a associação modo.
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
da classe de armazenamento quando quiser provisionar um volume persistente depois que a computação tiver sido selecionada pelo agendador do Kubernetes. Para obter mais informações, consulte
Modo de vinculação de volume na documentação do 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>
Corrigindo uma classe de armazenamento
Para o TKG em Supervisor, você não pode criar uma classe de armazenamento manualmente usando kubectl e YAML. Você só pode criar uma classe de armazenamento usando a estrutura de política de armazenamento vSphere e aplicá-la a um vSphere Namespace. O resultado são duas classes de armazenamento correspondentes em cada cluster TKG provisionado nesse vSphere Namespace.
Embora não seja possível criar uma classe de armazenamento manualmente usando kubectl e YAML, você pode modificar uma classe de armazenamento existente usando kubectl. Isso pode ser necessário se você provisionou um cluster TKG sem especificar uma classe de armazenamento padrão e agora deseja implantar um aplicativo usando o Helm ou um pacote Tanzu que requer uma classe de armazenamento padrão.
Em vez de criar um cluster totalmente novo com armazenamento padrão, você pode corrigir a classe de armazenamento existente e adicionar a anotação default = true conforme descrito na documentação do Kubernetes: Alterar a StorageClass padrão.
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>