
좋아 Sangmin, 이번 강의는 Kubernetes의 Persistent Volume(PV) 개념과 목적을 중심으로 설명하고 있어. 핵심 내용을 정리하고, 실제 환경에서 어떻게 쓰이는지 개념도를 함께 설명할게.
**Persistent Volume(PV)**를 사용하여 스토리지를 클러스터 차원에서 추상화
그리고 **Persistent Volume Claim(PVC)**으로 사용자(또는 앱)가 스토리지를 요청(claim)
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로 대체 |
| 모드 | 의미 |
|---|---|
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 등을 사용해야 해.