본문 바로가기
문서 목차
QKS · Storage

Persistent Volume Claims (PVC)

Persistent Volume Claim(PVC) 은 파드가 영구 스토리지를 요청하는 방법입니다. 파드가 재시작되거나 다른 노드로 이동해도 PVC에 바인딩된 스토리지의 데이터는 유지됩니다. 데이터베이스, 파일 스토리지, 로그 등 상태를 유지해야 하는 데이터에 활용합니다.

QUANTUM C&S

개요

Persistent Volume Claim(PVC) 은 파드가 영구 스토리지를 요청하는 방법입니다. 파드가 재시작되거나 다른 노드로 이동해도 PVC에 바인딩된 스토리지의 데이터는 유지됩니다. 데이터베이스, 파일 스토리지, 로그 등 상태를 유지해야 하는 데이터에 활용합니다.


QKS 콘솔에서 PVC 확인

  1. 왼쪽 메뉴에서 Storage > Persistent Volume Claims를 선택합니다.
  2. 네임스페이스를 선택하면 PVC 목록이 표시됩니다.

목록에서 확인할 수 있는 정보:

항목 설명
이름 PVC 이름
상태 Bound / Pending / Lost
볼륨 바인딩된 퍼시스턴트 볼륨 이름
용량 할당된 스토리지 용량
접근 모드 ReadWriteOnce / ReadWriteMany / ReadOnlyMany
Storage Class 사용 중인 스토리지 클래스
생성 시간 PVC 생성 시각

PVC 상태

상태 설명
Pending PVC가 생성되었지만 아직 볼륨에 바인딩되지 않은 상태입니다. Storage Class나 가용 볼륨을 확인하세요.
Bound PVC가 퍼시스턴트 볼륨에 성공적으로 바인딩된 상태입니다.
Lost 바인딩된 볼륨을 찾을 수 없는 상태입니다. 데이터 복구가 필요할 수 있습니다.

접근 모드

모드 약어 설명
ReadWriteOnce RWO 하나의 노드에서만 읽기/쓰기 가능. 가장 일반적
ReadOnlyMany ROX 여러 노드에서 동시에 읽기 전용 접근 가능
ReadWriteMany RWX 여러 노드에서 동시에 읽기/쓰기 가능 (NFS 등 지원 필요)

PVC YAML 예시

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-database-pvc
  namespace: production
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: standard  # 사용할 Storage Class
  resources:
    requests:
      storage: 50Gi

파드에서 PVC 사용

PVC를 파드에 마운트하여 사용합니다.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
    - name: my-container
      image: my-app:latest
      volumeMounts:
        - name: data-volume
          mountPath: /data  # 컨테이너 내 마운트 경로
  volumes:
    - name: data-volume
      persistentVolumeClaim:
        claimName: my-database-pvc  # 사용할 PVC 이름

StatefulSet은 volumeClaimTemplates를 사용하여 파드별로 자동으로 PVC를 생성합니다:

volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10Gi

kubectl로 관리

# PVC 목록
kubectl get pvc -n <namespace>

# PVC 상세 정보 (바인딩된 볼륨, 이벤트 포함)
kubectl describe pvc <name> -n <namespace>

# PVC 삭제
kubectl delete pvc <name> -n <namespace>

주의사항

  • PVC 삭제 전: 해당 PVC를 사용 중인 파드가 없는지 확인하세요. 사용 중인 PVC를 삭제하면 파드 종료 후에야 실제로 삭제됩니다.
  • 데이터 복구: PVC를 삭제하면 Storage Class의 reclaimPolicy에 따라 데이터가 삭제됩니다(Delete) 또는 보존됩니다(Retain). 현재 클러스터의 Storage Class 정책을 미리 확인하세요.
  • 용량 확장: 일부 Storage Class는 PVC 용량을 온라인으로 확장할 수 있습니다. 용량 확장이 필요하면 spec.resources.requests.storage 값을 늘리고 kubectl apply를 실행하세요.