쿠버네티스(Kubernetes)에서의 스토리지 클래스(Storage Class)는 다양한 유형의 스토리지를 정의하고 관리하는 방법을 제공합니다. 스토리지 클래스는 쿠버네티스 클러스터 내에서 사용할 수 있는 스토리지 유형을 정의하며, 이를 통해 동적인 볼륨 프로비저닝을 가능하게 합니다.
스토리지 클래스의 주요 기능과 특징은 다음과 같습니다:
- 동적 프로비저닝: 스토리지 클래스를 사용하면, 사용자는 필요에 따라 실시간으로 스토리지 볼륨을 생성할 수 있습니다. 이는 Persistent Volume Claim(PVC) 요청에 의해 자동으로 발생합니다. 이 방식은 미리 정의된 스토리지 볼륨을 관리하는 것보다 유연하고 효율적입니다.
- 스토리지 유형 정의: 각 스토리지 클래스는 특정 스토리지 유형(예: SSD, HDD, 클라우드 기반 스토리지 등) 및 해당 스토리지의 성능 및 비용 특성을 정의합니다.
- 클라우드 통합: 스토리지 클래스는 클라우드 제공업체의 다양한 스토리지 서비스와 통합될 수 있습니다. 예를 들어, AWS의 EBS, Google Cloud의 Persistent Disk, Azure의 Azure Disk 등의 서비스를 쿠버네티스 클러스터와 연동할 수 있습니다.
- 사용자 정의 파라미터: 관리자는 스토리지 클래스를 생성할 때 다양한 파라미터를 설정할 수 있습니다. 이는 스토리지의 액세스 모드, 복제 정책, 볼륨 크기 등을 포함할 수 있습니다.
클라우드 환경: 클라우드 환경에서는 AWS, Google Cloud, Azure, NCP, NHN Cloud 등의 클라우드 제공업체에서 제공하는 스토리지 서비스에 맞춰 스토리지 클래스를 정의할 수 있습니다.
온프레미스 환경: 온프레미스 환경에서는 NFS 서버, iSCSI, 또는 로컬 스토리지 등을 사용하여 스토리지 클래스를 설정할 수 있습니다.
스토리지 클래스를 사용함으로써, 쿠버네티스 클러스터는 다양한 스토리지 요구사항과 환경에 맞게 유연하게 스토리지를 관리할 수 있습니다.
각 StorageClass에는 PV 프로비저닝에 사용되는 볼륨 플러그인을 결정하는 프로비저너가 있습니다. 위의 예시는 AWS 프로비저너로 설정해서 작성한 것이라고 보시면됩니다.
reclaimPolicy도 중요한 부분이라 짚고 넘어가면 좋을 것 같은데요. PVC를 삭제하면, 해당 PVC에 바인딩된 PV와의 연결이 해제됩니다. 이후 PV의 상태는 해당 PV의 ReclaimPolicy에 따라 결정됩니다.
PV의 ReclaimPolicy:
- Retain: 이 정책 하에서, PVC가 삭제되어도 PV는 여전히 존재하며 데이터도 보존됩니다. PV는 수동으로 재활용하거나 삭제할 때까지 클러스터에서 'Released' 상태로 남아 있습니다. 관리자는 PV를 수동으로 재사용할 수 있으며, 이를 위해서는 PV를 정리하고 새 PVC에 바인딩하기 위한 준비를 해야 합니다.
- Delete: PVC가 삭제될 때 PV와 그에 연결된 스토리지 리소스도 함께 자동으로 삭제됩니다. 이 경우 PV는 더 이상 사용할 수 없습니다.
- Recycle: 이 정책은 PV를 자동으로 재활용하도록 합니다. PVC가 삭제되면, PV는 데이터를 정리하고 새로운 PVC에 사용될 수 있는 상태로 되돌아갑니다. 그러나 이 정책은 현재 많은 스토리지 시스템에서 권장되지 않거나 지원되지 않을 수 있습니다.
따라서 PVC를 삭제한 후 PV의 사용 가능 여부는 PV의 ReclaimPolicy 설정에 달려 있습니다. 만약 Retain 정책을 사용한다면, PV는 여전히 사용 가능하며 적절한 조치를 취한 후 재활용할 수 있습니다. Delete 정책을 사용하는 경우, PV는 자동으로 삭제되므로 재사용할 수 없습니다.
'성장일기 > Kubernetes' 카테고리의 다른 글
[k8s] 쿠버네티스가 도커 지원 중단한 이유가 무엇일까 (1) | 2024.01.03 |
---|---|
Deployment의 롤링업데이트 전략 이해하기 ( Max Unavailable, Max surge ) (2) | 2023.12.05 |
[쿠버네티스] PV, PVC (Persistent Volumes / Persistent Volumes Claim) 정리 (0) | 2023.11.21 |
쿠버네티스 기본 네트워크 개념 ( Pod 통신 ) (0) | 2023.11.16 |
cloud native의 장점과 단점은 무엇인가? 예를 들어보자 (0) | 2023.07.20 |