5.6. 기본 스토리지 클래스 관리
5.6.1. 개요
기본 스토리지 클래스를 관리하면 다음과 같은 몇 가지 다른 목표를 달성할 수 있습니다.
- 동적 프로비저닝을 비활성화하여 정적 프로비저닝을 강제 적용합니다.
- 다른 기본 스토리지 클래스가 있는 경우 스토리지 Operator가 초기 기본 스토리지 클래스를 다시 생성하지 못하도록 합니다.
- 기본 스토리지 클래스 이름 변경 또는 변경
이러한 목표를 달성하려면 ClusterCSIDriver
오브젝트의 spec.storageClassState
필드에 대한 설정을 변경합니다. 이 필드에 가능한 설정은 다음과 같습니다.
- Managed: (기본값) CSI(Container Storage Interface) Operator는 기본 스토리지 클래스를 적극적으로 관리하므로 클러스터 관리자가 기본 스토리지 클래스에 대한 대부분의 수동 변경 사항이 제거되고 수동으로 삭제하려고 하면 기본 스토리지 클래스가 지속적으로 다시 생성됩니다.
- Unmanaged: 기본 스토리지 클래스를 수정할 수 있습니다. CSI Operator는 스토리지 클래스를 적극적으로 관리하지 않으므로 자동으로 생성하는 기본 스토리지 클래스를 조정하지 않습니다.
- Removed: CSI Operator가 기본 스토리지 클래스를 삭제합니다.
기본 스토리지 클래스 관리는 다음 CSI(Container Storage Interface) 드라이버 Operator에서 지원합니다.
5.6.2. 웹 콘솔을 사용하여 기본 스토리지 클래스 관리
사전 요구 사항
- OpenShift Container Platform 웹 콘솔에 액세스합니다.
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
웹 콘솔을 사용하여 기본 스토리지 클래스를 관리하려면 다음을 수행합니다.
- 웹 콘솔에 로그인합니다.
- Administration > CustomResourceDefinitions 를 클릭합니다.
-
CustomResourceDefinitions 페이지에서
clustercsidrivers를 입력하여
ClusterCSIDriver
오브젝트를 찾습니다. - ClusterCSIDriver 를 클릭한 다음 Instances 탭을 클릭합니다.
- 원하는 인스턴스의 이름을 클릭한 다음 YAML 탭을 클릭합니다.
Managed
,Unmanaged
또는Removed
의 값을 사용하여spec.storageClassState
필드를 추가합니다.예제
... spec: driverConfig: driverType: '' logLevel: Normal managementState: Managed observedConfig: null operatorLogLevel: Normal storageClassState: Unmanaged 1 ...
- 1
spec.storageClassState
필드가 "Unmanaged"로 설정
- 저장을 클릭합니다.
5.6.3. CLI를 사용하여 기본 스토리지 클래스 관리
사전 요구 사항
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
CLI를 사용하여 스토리지 클래스를 관리하려면 다음 명령을 실행합니다.
oc patch clustercsidriver $DRIVERNAME --type=merge -p "{\"spec\":{\"storageClassState\":\"${STATE}\"}}" 1
- 1
- 여기서
${STATE}
는 "제거" 또는 "관리되지 않음" 또는 "관리되지 않음"입니다.여기서
$DRIVERNAME
은 프로비저너 이름입니다.oc get sc
명령을 실행하여 프로비저너 이름을 찾을 수 있습니다.
5.6.4. absent 또는 여러 기본 스토리지 클래스
5.6.4.1. 여러 기본 스토리지 클래스
기본이 아닌 스토리지 클래스를 기본값으로 표시하고 기존 기본 스토리지 클래스를 설정하지 않거나 기본 스토리지 클래스가 이미 있을 때 기본 스토리지 클래스를 생성하는 경우 여러 기본 스토리지 클래스가 발생할 수 있습니다. 여러 기본 스토리지 클래스가 있는 경우 기본 스토리지 클래스 pvc.spec.storageClassName
=nil)를 요청하는 모든 영구 볼륨 클레임(PVC)은 해당 스토리지 클래스의 기본 상태와 관계없이 가장 최근에 생성된 기본 스토리지 클래스를 가져옵니다. 경고 대시보드에서 여러 기본 스토리지 클래스인 MultipleDefaultStorageClasses
가 있다는 경고를 받습니다.
5.6.4.2. 기본 스토리지 클래스가 없음
PVC에서 존재하지 않는 기본 스토리지 클래스를 사용하려는 두 가지 시나리오가 있습니다.
- 관리자는 기본 스토리지 클래스를 제거하거나 기본이 아닌 것으로 표시한 다음 사용자가 기본 스토리지 클래스를 요청하는 PVC를 생성합니다.
- 설치 중에 설치 프로그램은 아직 생성되지 않은 기본 스토리지 클래스를 요청하는 PVC를 생성합니다.
이전 시나리오에서는 PVC가 보류 중인 상태로 무기한 유지됩니다. 이 상황을 해결하려면 기본 스토리지 클래스를 생성하거나 기존 스토리지 클래스 중 하나를 기본값으로 선언합니다. 기본 스토리지 클래스가 생성되거나 선언되면 PVC에 새 기본 스토리지 클래스가 제공됩니다. 가능한 경우 PVC는 결국 정적 또는 동적으로 프로비저닝된 PV에 바인딩하고 보류 중 상태로 이동합니다.
5.6.5. 기본 스토리지 클래스 변경
다음 절차에 따라 기본 스토리지 클래스를 변경합니다.
예를 들어 두 개의 스토리지 클래스인 gp3
및 standard
가 있고 기본 스토리지 클래스를 gp3
에서 standard
로 변경하려는 경우 .
사전 요구 사항
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
기본 스토리지 클래스를 변경하려면 다음을 수행합니다.
스토리지 클래스를 나열합니다.
$ oc get storageclass
출력 예
NAME TYPE gp3 (default) kubernetes.io/aws-ebs 1 standard kubernetes.io/aws-ebs
- 1
(default)
는 기본 스토리지 클래스를 나타냅니다.
원하는 스토리지 클래스를 기본값으로 설정합니다.
원하는 스토리지 클래스의 경우 다음 명령을 실행하여
storageclass.kubernetes.io/is-default-class
주석을true
로 설정합니다.$ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
참고짧은 시간 동안 여러 기본 스토리지 클래스를 사용할 수 있습니다. 그러나 결국 하나의 기본 스토리지 클래스만 존재하는지 확인해야 합니다.
여러 기본 스토리지 클래스가 있는 경우 기본 스토리지 클래스
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 get storageclass
출력 예
NAME TYPE gp3 kubernetes.io/aws-ebs standard (default) kubernetes.io/aws-ebs