- Pod에서 실제 데이터가 있는 디렉토리를 보존하기 위해 사용
- Pod의 일부로 정의 되며, Pod와 LifeCycle을 같이함
- 독립적인 쿠버네티스 오브젝트가 아니며, 스스로 생성 하거나 삭제할 수 없음 (Kind X)
- 마운트(mount)를 통해서만 사용할 수 있다.
- 실제 호스트에서 /var/lib/kubelet/pods/PODUID/volumes/ 위치에서 볼륨 확인

- Container Layer : Read / Write
- Image Layer : Read Only
→ Container Layer에 존재하는 모든 데이터는 Stateless.
→ Container가 종료되면 모두 사라진다!
- emptyDir : 일시적인 데이터를 저장하는데 사용. 비어있는 단순한 디렉토리
- hostPath : 노드의 파일 시스템에서 Pod의 디렉토리로 마운트 하는 데 사용
- gitRepo : Git 리포지토리를 Checkout 해서 초기화 하는 볼륨
- nfs : Pod 에 마운트된 네트워크 파일 시스템
- gcePersistentDisk : 구글 클라우드 영구 디스크
- awsEElastic-BlockStore : 아마존 클라우드 영구 디스크
- azureDisk : 애져 클라우드 영구 디스크
- 기타(cinder,cephfs,iscsi,flocke r,quobyte,glusterfs 등) : 다양한 스토리지
- configMap : 설정 파일 및 환경 변수를 보관하는 볼륨
- secret : 기밀 유지가 필요한 설정 파일이나 환경 변수를 보관하는 볼륨
- 대규모 파일 기반 Sorting 작업
- Pod 내의 컨테이너간 파일 교환
- 복구를 위한 임시 파일 보관
- Pod가 종료되어도 상태가 유지
- Node → Pod의 디렉토리로 마운트
- 동적 프로비저닝
- PV는 Pod와 별개의 LifeCycle → Pod가 종료되어도 데이터 유지
- ReadWriteOnce (RWO)
- 하나의 노드에서 읽기/쓰기로 마운트
- 하나의 노드에서 여러개의 POD가 실행중이라면 볼륨에 접근이 가능
- ReadOnlyMany (ROX)
- 여러 노드에서 읽기 전용으로 마운트된 볼륨
- ReadWriteMany (RWX)
- 여러 노드에서 읽기-쓰기로 마운트된 볼륨
- ReadWirteOncePod (RWOP)
- 오직 하나의 노드만 PVC에 접근 가능

- 사용자가 PV에 하는 요청
EX) 사용하고 싶은 용량, 읽기/쓰기 모드 등

1. Policy
Retain(유지) : PVC 를 삭제 해도 PV를 유지. 데이터는 살아 있지만 수동으로 정리 해야하는 단점
Delete(삭제) : 관련된 볼륨 모두 삭제
Recycle(재사용) : 뷸륨 자체를 삭제 하지는 않고 rm –rf /* 로 모든 데이터만 삭제
2. Access Mode
ReadWriteOnce : 하나의 node 에서 볼륨을 읽기-쓰기로 마운트할 가능
ReadOnlyMany : 여러 node 에서 볼륨을 읽기 전용으로 마운트할 수 가능
ReadWriteMany : 여러 node 에서 볼륨을 읽기-쓰기로 마운트할 수 가능
Volume을 직접 생성하지 않고 PVC를 이용해서 생성하면 개발자가 디스크, 인프라에 대해 잘 알지 못해도 손 쉽게 사용 가능!


