vSphere 네임스페이스에 할당된 vSphere 스토리지 정책은 영구 볼륨에 사용 가능한 두 가지 버전의 스토리지 클래스를 생성합니다. 선택하는 버전은 요구 사항에 따라 다릅니다.
사용 가능한 두 가지 버전의 스토리지 클래스
vSphere 스토리지 정책을 vSphere 네임스페이스에 할당하면 시스템은 해당 vSphere 네임스페이스에 일치하는 Kubernetes 스토리지 클래스를 생성합니다. 이 스토리지 클래스는 해당 네임스페이스에 프로비저닝된 각 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 설명서에서
볼륨 바인딩 모드를 참조하십시오.
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 클러스터에 두 개의 해당 스토리지 클래스가 생성됩니다.
kubectl 및 YAML을 사용하여 스토리지 클래스를 수동으로 생성할 수는 없지만 kubectl을 사용하여 기존 스토리지 클래스를 수정할 수 있습니다. 기본 스토리지 클래스를 지정하지 않고 TKG 클러스터를 프로비저닝했는데 이제는 기본 스토리지 클래스가 필요한 Helm 또는 Tanzu 패키지를 사용하여 애플리케이션을 배포하려는 경우 이렇게 하는 것이 필요할 수 있습니다.
기본 스토리지를 사용하여 완전히 새로운 클러스터를 생성하는 대신 기존 스토리지 클래스에 패치를 적용하고 Kubernetes 설명서 Change the default StorageClass(기본 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>