퍼시스턴트 볼륨
앞선 볼륨 포스트에서는 볼륨에대한 간단한 설명을 적었다
임시 볼륨 유형들은 파드와 같은 수명을 갖지만
퍼시스턴트 볼륨은 파드의 수명을 넘어 존재한다
파드가 삭제되면 임시 볼륨도 삭제되지만
퍼시스턴트 볼륨은 삭제되지 않는다
퍼시스턴트 볼륨(이하 PV) 는 관리자가 프로비저닝하거나
스토리지 클래스를 이용해 동적으로 프로비저닝한 클러스터의 스토리지이다.
PV는 볼륨과 같은 볼륨 플러그인지만 파드와는 별개의 라이프 사이클을 가진다
PV/PVC 생명주기
퍼시스턴트 볼륨 클레임
퍼시스턴트 볼륨 클레임(이하 PVC)은 사용자의 스토리지에 대한 요청이다
파드가 노드 리소스를 사용하듯 PVC는 PV의 리소스를 사용한다
또한 PVC는 특정크기 및 접근 모드를 요청 할 수 있다
(예: ReadWriteOnce, ReadOnlyMany, ReadWriteMany)
프로비저닝
PV 프로비저닝 방법은 두가지 정적 프로비저닝, 동적 프로비저닝이 있다
정적 프로비저닝
클러스터 관리자가 미리 적정용량의 PV를 만들어두고
요청에 의해 해당 PV를 할당한다
요청보다 PV의 용량이 적으면 요청은 실패한다
동적 프로비저닝
사용자가 PVC를 통해 PV를 요청했을때 생성, 제공된다
사용자가 원하는 만큼의 용량을 생성해 사용할수 있다
PVC는 스토리지 클래스가 필요로 한다
바인딩
PVC와 PV를 연결하는 단계로
마스터의 컨트롤 루프틑 새로운 PVC를 감시하고 일치하는 PV를 찾아 서로 바인딩한다
PVC와 PV는 1:1 관계이며
일치하는 볼륨이 없으면 클레임은 무한정 대기상태로 남는다
사용중
파드는 클레임을 볼륨으로 인식해 사용한다
클러스터는 클레임을 검사하여 바인딩된 볼륨을 찾고
해당 볼륨을 파드에 마운트 한다
반환
볼륨을 다 사용 후 리소스를 반환 할 수 있는 API를 사용해
PVC 오브젝트를 삭제 할 수 있다\
Retain(보존)
PV를 그대로 보존한다
PVC가 삭제되면 사용 중인던 PV는 릴리스된것으로 간주되며
다른 PVC가 재사용 할 수 없다
볼륨을 반환하기 위해서는 다음 단계를 따라야 한다
퍼시스턴트볼륨을 삭제한다. PV가 삭제된 후에도 외부 인프라(예: AWS EBS, GCE PD, Azure Disk 또는 Cinder 볼륨)의 관련 스토리지 자산이 존재한다.관련 스토리지 자산의 데이터를 수동으로 삭제한다.연결된 스토리지 자산을 수동으로 삭제한다.Delete(삭제)
PV와 외부 인프라(AWS EBS 등) 의 스토리지도 삭제한다
동적 프로비저닝된 볼륨은 스토리지 클래스의 반환 정책을 상속하며
기본값은 Delete 이다
Recycle(재활용)
재활용은 더이상 사용되지 않으며 대신 권장되는 방식은 동적 프로비저닝이다
사용해보기
퍼시스턴트 볼륨 생성YAML 파일에서는 클러스터 노드의 /mnt/data에 볼륨이 있다고 지정한다
볼륨의 크기는 10기가로 지정하고
읽기-쓰기 모드로 볼룸을 마운트한다
스토리지 클래스는 manual로 저으이하며
PVC의 요청을 이 PV에 바인딩하는데 사용한다
퍼시스턴트 클래임 생성파드는 PVC를 사용하여 물리적인 스토리지를 요청한다
해당 예제는 적어도 하나이상의 노드에 대해 읽기-쓰기 접근을 지원하며
최소 3기가 볼륨을 요청하는 PVC를 생성한다