쿠버네티스 PersistentVolume과 PersistentVolumeClaim

TMT

쿠버네티스에서 **PersistentVolume (PV)**를 직접 사용하지 않고 **PersistentVolumeClaim (PVC)**를 통해 접근하는 이유는 유연성, 추상화, 그리고 자원 관리 효율성 때문입니다. PVC를 통해 볼륨을 사용하는 방식은 쿠버네티스의 동적 스토리지 관리셀프 서비스 스토리지 요청을 가능하게 하며, 개발자와 관리자의 역할을 명확히 분리할 수 있도록 합니다.

아래에서 더 자세히 이유를 설명하겠습니다. 😊


🧩 1. 유연한 스토리지 관리

쿠버네티스는 PersistentVolumePersistentVolumeClaim을 나눠서 사용함으로써 스토리지 자원과 애플리케이션 간의 결합을 느슨하게 유지합니다. 이를 통해 다음과 같은 유연성을 제공합니다.

📌 예시:

  • 관리자는 PV를 생성하여 다양한 스토리지 유형과 크기의 스토리지 자원을 제공해 두고,
  • 개발자는 PVC를 사용하여 필요할 때 원하는 스토리지 요청을 할 수 있습니다.

이 방식은 개발자가 스토리지 세부 사항(스토리지 클래스, 크기, 접근 모드 등)을 알 필요 없이 필요한 스토리지를 요청하고 사용할 수 있도록 해줍니다.


🧩 2. 개발자와 관리자의 역할 분리

쿠버네티스는 관리자개발자 간의 역할을 명확히 분리하기 위해 PV와 PVC 개념을 도입했습니다.

관리자 역할개발자 역할
PV를 생성하고, 스토리지 제공PVC를 생성하고, 필요한 스토리지 요청
스토리지 타입, 크기, 접근 모드 결정필요한 스토리지의 크기와 접근 모드 요청
스토리지 제공자와 통합 관리애플리케이션 배포 시 PVC를 사용

이점:

  • 관리자는 스토리지 제공자와 관련된 세부사항을 관리하고, 개발자는 애플리케이션 코드에만 집중할 수 있습니다.
  • 개발자는 PVC를 통해 스토리지가 어디에서 제공되는지 몰라도 요청한 스토리지를 사용할 수 있습니다.

🧩 3. 동적 스토리지 프로비저닝 지원

PVC를 사용하면 쿠버네티스가 동적 스토리지 프로비저닝을 지원합니다.
즉, 관리자가 미리 PV를 생성하지 않아도, 쿠버네티스가 PVC 요청 시 자동으로 PV를 생성하고 할당할 수 있습니다.

📌 동적 프로비저닝 예시:

  1. 개발자가 PVC를 생성하고, 필요한 스토리지 크기와 접근 모드를 지정합니다.
  2. PVC 요청을 받은 쿠버네티스는 스토리지 클래스를 기반으로 자동으로 PV를 생성하고, PVC와 바인딩합니다.
  3. 개발자는 해당 PVC를 애플리케이션에 마운트하여 사용합니다.

예시 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

결과:

  • 관리자가 미리 PV를 생성하지 않아도, PVC 요청 시 쿠버네티스가 자동으로 10Gi 크기의 PV를 생성하고 바인딩합니다.

🧩 4. 스토리지 제공자의 다양성 지원

쿠버네티스는 다양한 스토리지 제공자(AWS EBS, GCE Persistent Disk, NFS, Ceph, GlusterFS 등)를 지원합니다.
PVC를 사용하면 개발자는 스토리지 제공자의 세부사항을 알 필요 없이 요청된 스토리지를 일관된 방식으로 사용할 수 있습니다.

📌 스토리지 제공자와 관계없이 동일한 PVC 사용 가능:

  • AWS EBS
  • Google Cloud Persistent Disk
  • Azure Disk
  • NFS

개발자는 PVC를 통해 스토리지가 어디에서 제공되는지 신경 쓰지 않고, 일관된 방식으로 스토리지를 요청하고 사용할 수 있습니다.


🧩 5. PV와 PVC의 관계 이해

쿠버네티스에서 PV와 PVC1:1 바인딩 관계를 가집니다.

  • PersistentVolume (PV): 스토리지 자원을 정의하고, 관리자가 관리합니다.
  • PersistentVolumeClaim (PVC): 개발자가 요청한 스토리지 요구 사항을 정의합니다.
  • 쿠버네티스는 PVC 요청에 맞는 PV를 찾아 자동으로 바인딩합니다.

🧩 6. 실무에서의 이점

관리자의 입장

  • 스토리지의 세부사항을 관리하고, 다양한 스토리지 제공자를 통합 관리할 수 있습니다.
  • 개발자에게 스토리지 사용 방식을 숨길 수 있어 관리 효율이 높아집니다.

개발자의 입장

  • 스토리지의 세부사항을 알 필요 없이 애플리케이션 코드에만 집중할 수 있습니다.
  • PVC를 통해 필요한 스토리지를 손쉽게 요청하고 사용할 수 있습니다.

🧩 7. 정리: 왜 PVC를 사용하는가?

이유설명
유연한 스토리지 관리개발자가 스토리지 세부사항을 몰라도 스토리지 사용 가능
역할 분리관리자는 PV 관리, 개발자는 PVC 사용으로 역할 분리
동적 스토리지 프로비저닝PVC 요청 시 자동으로 PV를 생성하여 할당
다양한 스토리지 제공자 지원PVC를 통해 여러 스토리지 제공자를 일관되게 사용
추상화개발자가 스토리지 제공자나 세부 설정을 알 필요 없음

PVC는 쿠버네티스에서 스토리지 관리의 핵심 요소이며, 개발자와 관리자가 더 효율적으로 협업할 수 있도록 돕는 중요한 메커니즘입니다. 😊

Edit this page