컨테이너 내에 디스크에 있는 파일은 임시적이며, 컨테이너에서 실행될때, 애플리케이션에 적지 않은 문제가 발생한다. 한가지 문제는, 컨테이너가 크래시될 때, 파일이 손실된다는 것이다. kubelet 은 컨테이너를 다시 시작하지만, 초기화된 상태이다. 두 번째 문제는 Pod에서 같이 실행되는 컨테이너 간에 파일을 공유할때 발생한다.
도커는 다소 느슨하고, 덜 관리되지만, 볼륨이라는 개념을 가지고 있다. 도커 볼륨은 디스크에 있는 디렉터리이거나, 다른 커테이너에 있다. 도커는 볼륨 드라이버를 제공하지만, 기능이 다소 제한된다.
쿠버네티스는 다양한 유형의 볼륨을 지원한다. 파드는 여러 볼륨 유형을 동시에 사용할 수 있다.
임시 볼륨 유형은 파드의 수명을 가지지만, 퍼시스턴트 볼륨은 파드의 수명을 넘어 존재한다.
파드가 더이상 존재하지 않으면, 쿠버네티스는 임시(ephemeral) 볼륨을 삭제하지만, 퍼시스턴트(persistent) 볼륨을 삭제하지 않는다.
볼륨의 종류와 관계 없이, 파드 내의 컨테이너가 재시작되어도 데이터는 보존된다.
볼륨을 이용하려면, spec.volumes
에서 파드에 제공할 볼륨을 지정하고, spec.containers[*].volumeMounts
의 컨테이너에 해당 볼륨을 마운트할 위치를 선언한다.