컨테이너의 볼륨은 컨테이너의 생명주기와 같다. 컨테이너가 삭제되면 컨테이너 내부에 저장되어있던 내용들 역시 다 사라진다. 도커를 이용해서 mysql을 띄울때 호스트의 볼륨을 마운트해서 컨테이너가 삭제되더라도 데이터는 호스트의 파일시스템에 남도록 사용해본 경험이 있을 것이다.
쿠버네티스에서도 마찬가지로 파드가 휘발성이 강한 성질을 가지고 있기때문에 파드는 재생성 되더라도 기존 데이터를 저장할 수 있는 방법이 필요하다. 쿠버네티스에서는 PV, PVC를 통해서 데이터를 영속적으로 저장한다.

위 그림 처럼 개별 노드에 위치한 파드는 해당 노드(호스트)의 볼륨에 데이터를 저장할 수 있다.

하지만 이 방법의 가장 큰 문제는 1번 노드가 문제가 생겨서 Pod A가 2번 노드로 옮겨졌을 때 1번 노드의 볼륨에 접근 할 수 없다는 문제가 있다.

쿠버네티스에서는 개별 호스트 볼륨에 저장하는 방식 보다는 클러스터노드 전체가 공유해서 접근할 수 있는 네크워크 볼륨에 저장하는 방식을 많이 사용한다. 파드가 노드를 이리저리 옮겨 다닐 수 있으므로 클러스터 어떤 노드에라서라도 접근 가능한 볼륨이여야 한다는게 핵심이다.
처음 쿠버네티스에서 PV, PVC를 사용해보면 왜 굳이 PV, PVC로 나눠서 볼륨을 관리하는지 잘 와닿지가 않는다. 나 역시도 그랬다. PV, PVC를 사용하는 이유를 결론 부터 말해보면 PV를 통해서 볼륨을 확보하고, PVC라는 인터페이스를 통해서 확보된 볼륨에서 필요한 볼륨만 사용한다고 정리할 수 있다.