성장일기/Kubernetes

[쿠버네티스] PV, PVC (Persistent Volumes / Persistent Volumes Claim) 정리

지추월자 2023. 11. 21. 14:10
반응형

쿠버네티스(Kubernetes)에서의 PV(Persistent Volume)와 PVC(Persistent Volume Claim)는 데이터 저장과 관련된 중요한 개념입니다. 

컨테이너 환경에서 데이터 저장소는 매우 중요한 개념입니다. 컨테이너 자체는 일반적으로 불변(immutable)하고 상태 비저장(stateless)의 특성을 가지고 있습니다. 이는 컨테이너가 삭제되거나 재시작될 때 내부 데이터가 소실될 수 있음을 의미합니다.  그렇기 때문에 쿠버네티스에서도 PV (Persistent Volume)와 PVC (Persistent Volume Claim) 개념을 이용하여 영구적인 데이터 저장 옵션을 설정하셔야합니다. 

PV (Persistent Volume): PV는 클러스터 내에서 사용자가 사용할 수 있는 스토리지 단위입니다. PV는 물리적인 스토리지 리소스(예: SSD, HDD, 클라우드 스토리지 등)를 추상화한 것으로, 개발자가 스토리지의 물리적인 세부 사항을 알 필요 없이 사용할 수 있도록 해줍니다. PV는 관리자에 의해 프로비저닝되거나 동적 프로비저닝을 통해 자동으로 생성될 수 있습니다.


그렇다면 PV가 정적으로 프로비저닝 되는 것과 동적으로 프로비저닝 되는 것은 어떤 의미를 가지는지 봅시다. 

정적 프로비저닝 (Static Provisioning)

정적 프로비저닝에서는 관리자가 수동으로 PV를 생성하고 관리합니다. 

  1. 수동 생성: 클러스터 관리자는 클러스터에 필요한 PV를 미리 생성합니다. 이때, 각 PV는 특정 스토리지 자원(예: NFS 서버, 클라우드 볼륨 등)에 연결되어 있습니다.
  2. 사용자 요청: 사용자는 PVC (Persistent Volume Claim)를 생성하여 필요한 스토리지 용량, 액세스 모드 등을 명시합니다.
  3. 바인딩: 쿠버네티스는 PVC를 만족시키는 PV를 찾아서 자동으로 바인딩합니다. 만약 적합한 PV가 없다면, PVC는 바인딩되지 않은 상태로 남아있습니다.

정적 프로비저닝의 주요 단점은 관리자가 미리 모든 PV를 생성해야 한다는 점입니다. 

동적 프로비저닝 (Dynamic Provisioning)

동적 프로비저닝은 사용자의 PVC 요청에 따라 자동으로 PV를 생성하는 방식입니다. 

  1. StorageClass 사용: 동적 프로비저닝을 위해 관리자는 하나 이상의 StorageClass를 정의합니다. 각 StorageClass는 특정 스토리지 유형(예: SSD, HDD) 및 프로비저너(예: AWS EBS, Google Cloud Persistent Disk)를 지정합니다.
  2. PVC 생성: 사용자는 PVC를 생성하고, 필요한 스토리지 클래스와 크기, 액세스 모드 등을 명시합니다.
  3. 자동 PV 생성: PVC가 제출되면, 쿠버네티스는 해당 StorageClass의 프로비저너를 사용하여 자동으로 새로운 PV를 생성하고 PVC에 바인딩합니다.

동적 프로비저닝의 주요 장점은 스토리지 관리의 자동화와 유연성입니다. 관리자는 미리 PV를 생성할 필요 없이, 사용자의 요구사항에 따라 자동으로 필요한 스토리지 리소스가 할당되도록 할 수 있습니다.


PVC (Persistent Volume Claim): PVC는 사용자가 스토리지에 대해 요청하는 방법입니다. 사용자는 PVC를 통해 필요한 스토리지의 크기, 액세스 모드(읽기 전용, 읽기/쓰기 등), 그리고 다른 특성들을 명시할 수 있습니다. 쿠버네티스 시스템은 이러한 요구사항에 맞는 PV를 찾아 PVC와 바인딩합니다. 

그래서 이 다음 편에서는 동적프로비저닝을 하기 위해서 필요한 StorageClass에 대해서 정리해보겠습니다.

 

반응형