- 컨테이너 내의 디스크에 있는 파일은 임시적이기 때문에 볼륨을 이용해 이런 문제를 해결한다.
- 많은 볼륨 플러그인이 존재하며 여기를 참고하자
- 로컬 서버에서 사용할 수 있는 볼륨 중에서 내부 호스트의 디스크를 사용하는 emptyDir, hostPath가 있다.
- nfs 볼륨을 이용해서 볼륨 하나를 여러 컨테이너에서 공유해서 사용 가능
emptyDir
- 파드가 실행되는 호스트의 디스크를 임시로 컨테이너에 볼륨으로 할당해서 사용하는 방법
- 파드가 사라지면 같이 사라진다.
- 주로 메모리와 디스크를 함께 이용하는 대용량 데이터 계산에 사용
- 컨테이너에 문제가 발생해도 파드는 살아 있기에 emptyDir에 저장해둔 데이터도 살아있다.
hostPath
- emptyDir은 임시 디렉터리를 마운트하는 것이라면 hostPath는 호스트에 있는 실제 파일이나 디렉터리를 마운트한다.
- emptyDir은 컨테이너를 재시작했을 때 데이터를 보존하는 역할이라면 hostPath는 파드를 재시작했을 때도 호스트에 데이터가 남는다.
PV, PVC
- 쿠버네티스에서는 PersistentVolume과 PersistentVolumeClaim 2개로 분리해 볼륨을 사용한다.
- PV는 볼륨이고 사용자가 PV에 PVC를 통해 사용량 설정해 요청한다.
- 프로비저닝 > 바인딩 > 사용 > 반환 과정의 생명 주기가 있다.
Provisioning
- PV를 만드는 단계
- 정적인 방법과 동적인 방법으로 나뉨
- 동적 프로비저닝할 때 스토리지를 정의하는 스토리지 클래스로 PV를 생성한다.
Binding
- PV와 PVC의 연결 단계
- PVC에서 원하는 조건을 만족하는 PV가 없다면 요청은 실패하지만 요청은 끝나지 않음
- PV와 PVC는 1대1 관계이다.
Using
- PVC는 파드에 설정되고 볼륨으로 인식
- 파드를 유지하는 동안 계속 사용하며 시스템에서 임의로 삭제 불가
Reclaiming
- PVC는 삭제되고 PVC를 사용하던 PV를 초기화한다.
- 초기화 정책은 Retain, Delete가 있다
- Retain: PV를 그대로 보존한다. 단순 해제 상태로 데이터는 그대로 남아있어 사용하려면 직접 초기화해줘야한다.
- Delete: PV를 삭제하고 연결된 스토리지 쪽의 볼륨도 삭제
참고: Storage