쿠버네티스 PV/PVC

이준석·2023년 2월 15일
1

PV(persistence Volume), PVC(Persistence Volume Claim)

쿠버네티스는 인프라에 대한 복잡성을 추상화를 통해서 간단하게 하고, 개발자들이 손쉽게 필요한 인프라(컨테이너, 디스크, 네트워크)를 설정할 수 있도록 하는 개념을 가지고 있다.

그래서 인프라의 종속적인 부분은 시스템 관리자가 설정하도록 하고, 개발자는 이에 대한 이해 없이도 간단하게 사용할 수 있도록 디스크 볼륨 부분에 PV와 PVC의 개념을 도입했다.

시스템 관리자가 실제 물리 디스크를 생성한 후에 이 디스크를 PV라는 이름으로 쿠버네티스에 등록한다.
개발자는 Pod는 생성할 때, 볼륨을 정의하고 이 볼륨 정의 부분에 물리적 디스크에 대한 특성을 정의하는 것이 아니라 PVC를 지정하여 관리자가 생성한 PV와 연결한다.

시스템 관리자가 생성한 물리 디스크를 쿠버네티스 클러스터에 표현한 것이 PV이고, Pod의 볼륨과 PV를 연결하는 관계가 PVC가 된다.



PV, PVC의 Lifecycle


1. 프로비저닝(Provisioning)

yaml 파일 등을 이용해 정적(static) 또는 동적(dynamic)의 PV를 생성하는 단계이다.

정적은 PV를 수동으로 생성하여 PVC에 직접 바인딩 한 후 사용하는 것이다.
동적은 별도의 PV 생성 없이 PVC의 정의에 따라서 맞는 물리 디스크 생성 및 PV 생성을 자동화하는 것이다.

2. 바인딩(Binding)

PV를 PVC에 연결시키는 단계이다.
PVC는 사용자가 요청하는 볼륨을 PV에 요청하고 PV는 그에 맞는 볼륨이 있으면 할당된다.

만약 PVC가 요청하는 볼륨이 PV에 없다면 해당 요청은 무한정 남아있게 되고, PVC가 요청하는 볼륨이 PV에 생성되면 그 요청은 받아들어져 할당된다.

PV와 PVC는 ClaimRef를 사용하는 1:1 관계이며 바인딩이 정상적으로 완료될 경우 bound 상태가 된다.

3. 사용(Using)

클러스터는 PVC를 확인하여 바인딩된 PV를 찾고 해당 볼륨을 Pod에서 사용할 수 있도록 해준다.

만약 Pod가 사용 중인 PVC를 삭제하려고 하면 Storage Object in Use Protection에 의해 삭제되지 않는다.
만약 삭제 요청을 했다면 Pod가 PVC를 사용하지 않을 때까지 삭제 요청은 연기된다.

4. 회수(Reclamiming)

PV는 연결된 PVC가 삭제된 후 다시 다른 PVC에 의해서 재사용이 가능하다.
때문에 사용이 종료된 PVC를 삭제할 때, 사용했던 PV의 데이터를 지울 지 유지할 지에 대한 정책을 Reclaim Policy를 이용하여 설정이 가능하다.

  • Retain: 삭제하지 않고 데이터를 유지한다. (PV도 데이터도 모두 유지)

  • Recycle: 재사용이 가능하며 재사용 시 데이터의 내용을 자동으로 rm -rf로 삭제한 후, 재사용 된다. (PV만 유지, 데이터는 삭제)

  • Delete: 사용이 종료되면 해당 볼륨은 삭제된다. (PV도 데이터도 모두 삭제)



참고 자료

https://bcho.tistory.com/1259
https://nirsa.tistory.com/157

0개의 댓글