Persistent Volume

Yu Sang Min·2025년 6월 23일

CKA

목록 보기
70/110
post-thumbnail

좋아 Sangmin, 이번 강의는 Kubernetes의 Persistent Volume(PV) 개념과 목적을 중심으로 설명하고 있어. 핵심 내용을 정리하고, 실제 환경에서 어떻게 쓰이는지 개념도를 함께 설명할게.


📦 Persistent Volume (PV) 개념 정리


📍 왜 PV가 필요한가?

기존 방식 문제점 (Pod 내부에 직접 Volume 정의할 경우):

  • 모든 Pod에 스토리지 구성 정보를 직접 작성해야 함
  • Pod가 많아지면, 유지보수 지옥
  • 스토리지 변경 시 모든 Pod YAML 수정 필요

해결책:

**Persistent Volume(PV)**를 사용하여 스토리지를 클러스터 차원에서 추상화
그리고 **Persistent Volume Claim(PVC)**으로 사용자(또는 앱)가 스토리지를 요청(claim)


🧱 Persistent Volume(PV) 구조

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-vol-1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/data/pv-vol-1"
필드설명
capacity.storage볼륨 크기 설정 (예: 1Gi)
accessModes읽기/쓰기 접근 모드 설정 (다음 섹션 참조)
hostPath(예제용) 노드 로컬 경로, 프로덕션에서는 클라우드 또는 NFS로 대체

🔐 Access Modes 종류

모드의미
ReadWriteOnce (RWO)단일 노드에서 읽기/쓰기 가능
ReadOnlyMany (ROX)다수의 노드에서 읽기만 가능
ReadWriteMany (RWX)다수의 노드에서 읽기/쓰기 모두 가능 (NFS, CephFS 등 필요)

🧰 프로비저닝 방식

유형설명
정적 프로비저닝관리자가 미리 PV를 만들어 놓음
동적 프로비저닝PVC가 요청되면 자동으로 PV를 생성 (StorageClass 필요)

🎯 실제 흐름 요약 (정적 프로비저닝 기준)

[Admin]
  ⬇ Create
PersistentVolume (PV)
  ⬆
[User]
  ⬇ Create
PersistentVolumeClaim (PVC)
  ⬇ Binds to
Available PV

🧪 명령어

kubectl create -f pv.yaml
kubectl get pv

PV를 생성하면 STATUS: Available 상태로 대기하고, 이후 PVC가 매칭되면 STATUS: Bound로 바뀜.


📌 참고: hostPath단일 노드 테스트용이고, 실제 서비스에서는 NFS, AWS EBS, GCP PD, Azure Disk 등을 사용해야 해.


🔜 다음 실습 할것

  • Persistent Volume Claim(PVC) 생성법
  • PVC와 PV의 매칭 규칙 (크기, Access Mode, StorageClass 등)
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글