Skip to content

쿠버네티스의 퍼시스턴트 볼륨 클레임 (PVC) ​

퍼시스턴트 볼륨 클레임이란? ​

퍼시스턴트 볼륨 클레임(PVC)은 사용자가 퍼시스턴트 볼륨(PV)에 대한 스토리지 요구를 정의하고, 이를 할당받기 위해 사용하는 쿠버네티스 리소스입니다. PVC와 PV 사이의 바인딩은 쿠버네티스가 자동으로 관리합니다.

PVC 생성 과정 ​

PVC를 생성하기 위해 필요한 YAML 파일의 기본 구조는 다음과 같습니다.

yaml
# pvc-definition.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500Mi
yaml
# pv-definition.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-vol1
spec:
  accessModes: ["ReadWriteOnce"]
  capacity:
    storage: 1Gi
  hostPath:
    path: /tmp/data

이 구조를 사용하여 500Mi의 스토리지를 요청하며, ReadWriteOnce 액세스 모드로 설정된 PVC를 생성합니다. 이 액세스 모드는 볼륨을 한 번에 하나의 노드에서만 읽고 쓸 수 있음을 의미합니다.

PVC와 PV 바인딩 확인 ​

PVC를 생성한 후, 쿠버네티스는 조건을 충족하는 PV를 찾아 자동으로 바인딩합니다. 생성된 PVC와 바인딩 상태를 확인하기 위해 다음 명령어를 사용합니다.

bash
kubectl get persistentvolumeclaims

PVC 삭제 및 볼륨 처리 옵션 ​

PVC를 삭제할 때, PV에 대한 처리 방식을 결정할 수 있습니다. 기본적으로 PV는 Retain 정책을 사용하여 PVC 삭제 후에도 데이터를 보존합니다. 다른 옵션으로는 Delete와 Recycle가 있습니다. Delete 옵션을 사용하면 PVC와 함께 PV도 삭제되고, Recycle 옵션은 데이터를 지운 후 다른 요청에 재사용할 수 있도록 합니다.

bash
kubectl delete persistentvolumeclaim my-claim

이 명령은 my-claim 이름의 PVC를 삭제합니다. 이와 관련된 PV의 처리는 PV의 정책에 따라 다르게 실행됩니다.

Pod, ReplicaSet, Deployment 적용 ​

yaml
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
    - name: myfrontend
      image: nginx
      volumeMounts:
        - mountPath: "/var/www/html"
          name: mypd
  volumes:
    - name: mypd
      persistentVolumeClaim:
        claimName: myclaim

Kubernetes Persistent Volume Claims Reference Docs ​

https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#persistentvolumeclaim-v1-core
https://docs.cloud.oracle.com/en-us/iaas/Content/ContEng/Tasks/contengcreatingpersistentvolumeclaim.htm
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#claims-as-volumes