컨테이너 내의 파일들은 일시적인 것이다
따라서 컨테이너가 재시작 될 경우
컨테이너 내의 모든 파일들이 초기화 될 수 있는데
초기화 되는 컨테이너가 만약 DB일 경우
DB의 모든 내용들을 잃게 되는 것이다
이러한 일들을 방지 하기 위해
우리는 볼륨을 사용해야한다
💡볼륨의 종류와 상관없이 컨테이너가 재시작 되어도 데이터는 보존 된다.
볼륨을 사용하기 위해선 .spec.volume에서 파드에 제공할 볼륨을 지정
.spec.containers[*].volumeMounts 의 컨테이너에 해당 볼륨을 마운트할 위치를 선언하면 된다
도커에도 느슨하고 덜 관리 되지만 볼륨이라는 개념이 있으며
도커의 볼륨은 디스크에있는 디렉토리거나
다른 컨테이너이다
쿠버네티스는 다양한 볼륨을 사용할수 있으며
파드는 여러 유형의 볼륨을 동시에 사용할수도 있다
볼륨의 종류
볼륨의 종류는 크게 3가지다
Temp : emptyDir
Local : hostPath
Network : NFS, AWS, EBS
emptyDir
임시볼륨인 emptyDir 노드에 파드가 할당될 때 같이 존재하며
해당 노드에서 파드가 실행되는 동안만 존재한다
그러기에 컨테이너 크러쉬의 경우에는 안전하다
emptyDir의 용도로는
웹서버 컨테이너가 데이터를 처리하는 동안 컨텐츠 매니저 컨테이너가
가져오는 파일을 보관하는 것과 같은
컨테이너끼리 데이터를 나누기 위해 존재
구성 예시
hostPath
hostPath 볼륨은 호스트 노드의 파일시스템에있는 파일이나 디렉토리를
파드에 마운트 한다.
그렇기에 로컬 볼륨이라는 이름을 가지고 있다
hostPath는 노드가 바뀌게되면 이전 노드의 데이터를 볼수없게 되며
보안에도 취약하다는 단점이 있다
그렇기에 노드를 관리하는 목적으로 사용되곤한다
구성예시
네트워크 볼륨
클러스터 밖에서 사용되는 볼륨으로
클라우드 시스템을 많이 사용한다