6.6. 기본 스토리지 클래스 관리
6.6.1. 개요 링크 복사링크가 클립보드에 복사되었습니다!
기본 저장소 클래스를 관리하면 여러 가지 목표를 달성할 수 있습니다.
- 동적 프로비저닝을 비활성화하여 정적 프로비저닝을 적용합니다.
- 다른 기본 저장 클래스가 있는 경우 저장 운영자가 초기 기본 저장 클래스를 다시 만들지 못하게 합니다.
- 기본 저장소 클래스의 이름을 바꾸거나 다른 방식으로 변경
이러한 목표를 달성하려면 ClusterCSIDriver
개체의 spec.storageClassState
필드 설정을 변경합니다. 이 필드에 가능한 설정은 다음과 같습니다.
- 관리됨 : (기본값) 컨테이너 스토리지 인터페이스(CSI) 운영자는 기본 스토리지 클래스를 적극적으로 관리하므로 클러스터 관리자가 기본 스토리지 클래스에 수행한 대부분의 수동 변경 사항이 제거되고, 수동으로 삭제하려고 하면 기본 스토리지 클래스가 계속해서 다시 생성됩니다.
- 관리되지 않음 : 기본 저장소 클래스를 수정할 수 있습니다. CSI 운영자는 스토리지 클래스를 적극적으로 관리하지 않으므로 자동으로 생성하는 기본 스토리지 클래스를 조정하지 않습니다.
- 제거됨 : CSI 연산자는 기본 저장 클래스를 삭제합니다.
기본 스토리지 클래스 관리 기능은 다음 컨테이너 스토리지 인터페이스(CSI) 드라이버 연산자를 통해 지원됩니다.
6.6.2. 웹 콘솔을 사용하여 기본 스토리지 클래스 관리 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- OpenShift Container Platform 웹 콘솔에 액세스합니다.
- cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
프로세스
웹 콘솔을 사용하여 기본 스토리지 클래스를 관리하려면 다음을 수행합니다.
- 웹 콘솔에 로그인합니다.
- Administration > CustomResourceDefinitions 를 클릭합니다.
-
CustomResourceDefinitions 페이지에서
clustercsidrivers를 입력하여
ClusterCSIDriver
오브젝트를 찾습니다. - ClusterCSIDriver 를 클릭한 다음 Instances 탭을 클릭합니다.
- 원하는 인스턴스의 이름을 클릭한 다음 YAML 탭을 클릭합니다.
Managed
,Unmanaged
또는Removed
의 값을 사용하여spec.storageClassState
필드를 추가합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.storageClassState
필드가 "Unmanaged"로 설정
- 저장을 클릭합니다.
6.6.3. CLI를 사용하여 기본 스토리지 클래스 관리 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
CLI를 사용하여 스토리지 클래스를 관리하려면 다음 명령을 실행합니다.
oc patch clustercsidriver $DRIVERNAME --type=merge -p "{\"spec\":{\"storageClassState\":\"${STATE}\"}}"
$ oc patch clustercsidriver $DRIVERNAME --type=merge -p "{\"spec\":{\"storageClassState\":\"${STATE}\"}}"
- 1
- 여기서
${STATE}
는 "제거" 또는 "관리되지 않음" 또는 "관리되지 않음"입니다.여기서
$DRIVERNAME
은 프로비저너 이름입니다.oc get sc
명령을 실행하여 프로비저너 이름을 찾을 수 있습니다.
6.6.4. absent 또는 여러 기본 스토리지 클래스 링크 복사링크가 클립보드에 복사되었습니다!
6.6.4.1. 여러 기본 스토리지 클래스 링크 복사링크가 클립보드에 복사되었습니다!
기본이 아닌 스토리지 클래스를 기본값으로 표시하고 기존 기본 스토리지 클래스를 설정하지 않거나 기본 스토리지 클래스가 이미 있을 때 기본 스토리지 클래스를 생성하는 경우 여러 기본 스토리지 클래스가 발생할 수 있습니다. 여러 기본 스토리지 클래스가 있는 경우 기본 스토리지 클래스 pvc.spec.storageClassName
=nil)를 요청하는 모든 영구 볼륨 클레임(PVC)은 해당 스토리지 클래스의 기본 상태와 관계없이 가장 최근에 생성된 기본 스토리지 클래스를 가져옵니다. 경고 대시보드에서 여러 기본 스토리지 클래스인 MultipleDefaultStorageClasses
가 있다는 경고를 받습니다.
6.6.4.2. 기본 스토리지 클래스가 없음 링크 복사링크가 클립보드에 복사되었습니다!
PVC에서 존재하지 않는 기본 스토리지 클래스를 사용하려는 두 가지 시나리오가 있습니다.
- 관리자는 기본 스토리지 클래스를 제거하거나 기본이 아닌 것으로 표시한 다음 사용자가 기본 스토리지 클래스를 요청하는 PVC를 생성합니다.
- 설치 중에 설치 프로그램은 아직 생성되지 않은 기본 스토리지 클래스를 요청하는 PVC를 생성합니다.
이전 시나리오에서는 PVC가 보류 중인 상태로 무기한 유지됩니다. 이 상황을 해결하려면 기본 스토리지 클래스를 생성하거나 기존 스토리지 클래스 중 하나를 기본값으로 선언합니다. 기본 스토리지 클래스가 생성되거나 선언되면 PVC에 새 기본 스토리지 클래스가 제공됩니다. 가능한 경우 PVC는 결국 정적 또는 동적으로 프로비저닝된 PV에 바인딩하고 보류 중 상태로 이동합니다.
6.6.5. 기본 스토리지 클래스 변경 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 기본 스토리지 클래스를 변경합니다.
예를 들어 두 개의 스토리지 클래스(gp2
및 standard
)가 있으며 기본 스토리지 클래스를 gp2
에서 standard
로 변경하려고 합니다.
사전 요구 사항
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
기본 스토리지 클래스를 변경하려면 다음을 수행합니다.
스토리지 클래스를 나열합니다.
oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE gp3 (default) ebs.csi.aws.com standard ebs.csi.aws.com
NAME TYPE gp3 (default) ebs.csi.aws.com
1 standard ebs.csi.aws.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
(default)
는 기본 스토리지 클래스를 나타냅니다.
원하는 스토리지 클래스를 기본값으로 설정합니다.
원하는 스토리지 클래스의 경우 다음 명령을 실행하여
storageclass.kubernetes.io/is-default-class
주석을true
로 설정합니다.oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
$ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고짧은 시간 동안 여러 기본 스토리지 클래스를 사용할 수 있습니다. 그러나 결국 하나의 기본 스토리지 클래스만 존재하는지 확인해야 합니다.
여러 기본 스토리지 클래스가 있는 경우 기본 스토리지 클래스
pvc.spec.storageClassName
=nil)를 요청하는 모든 영구 볼륨 클레임(PVC)은 해당 스토리지 클래스의 기본 상태와 관계없이 가장 최근에 생성된 기본 스토리지 클래스를 가져옵니다. 경고 대시보드에서 여러 기본 스토리지 클래스인MultipleDefaultStorageClasses
가 있다는 경고를 받습니다.이전 기본 스토리지 클래스에서 기본 스토리지 클래스 설정을 제거합니다.
이전 기본 스토리지 클래스의 경우 다음 명령을 실행하여
storageclass.kubernetes.io/is-default-class
주석의 값을false
로 변경합니다.oc patch storageclass gp3 -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
$ oc patch storageclass gp3 -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항을 확인합니다.
oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE gp3 ebs.csi.aws.com standard (default) ebs.csi.aws.com
NAME TYPE gp3 ebs.csi.aws.com standard (default) ebs.csi.aws.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow