성장일기/Kubernetes

[쿠버네티스] PVC, 스토리지클래스, 동적프로비저닝

지추월자 2023. 11. 21. 16:17
반응형

쿠버네티스(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, 또는 로컬 스토리지 등을 사용하여 스토리지 클래스를 설정할 수 있습니다.

스토리지 클래스를 사용함으로써, 쿠버네티스 클러스터는 다양한 스토리지 요구사항과 환경에 맞게 유연하게 스토리지를 관리할 수 있습니다.

https://kubernetes.io/docs/concepts/storage/storage-classes/

각 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는 자동으로 삭제되므로 재사용할 수 없습니다.

 

반응형