Kubernetes PV와 PVC 개요
PV(Persistent Volume)
- 클러스터 관리자가 프로비저닝한 스토리지 볼륨
- Pod에 영구적인 스토리지를 제공
- NFS, iSCSI, AWS EBS, GCP PD 등 다양한 유형의 스토리지 지원
- 클러스터 수준에서 정의되며, 네임스페이스를 가지지 않음
PVC(Persistent Volume Claim)
- 사용자(개발자)가 요청하는 스토리지 볼륨
- 필요한 스토리지 용량과 접근 모드 지정
- PV와 바인딩되어 Pod에 마운트됨
- 네임스페이스 수준에서 정의
PV와 PVC의 관계
- 클러스터 관리자가 PV를 프로비저닝
- 사용자가 PVC를 생성하여 PV 요청
- 쿠버네티스가 PVC와 적절한 PV를 자동으로 바인딩
- Pod에서 PVC를 마운트하여 영구 스토리지 사용
PV 유형
- 정적 프로비저닝: 미리 PV를 준비해 놓음
- 동적 프로비저닝: PVC 요청 시 PV를 자동으로 생성
PV/PVC 생성 예시
# PV 정의
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/my-pv
# PVC 정의
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
PV/PVC 사용 예시
# Pod에서 PVC 사용
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: app-image
volumeMounts:
- name: app-storage
mountPath: /app/data
volumes:
- name: app-storage
persistentVolumeClaim:
claimName: my-pvc