일시적 볼륨
일시적 볼륨 (ephemeral-volumes)
이 문서는 쿠버네티스의 일시적(ephemeral) 볼륨을 설명해요. 볼륨, 특히 PersistentVolumeClaim과 PersistentVolume에 대한 지식이 권장돼요.
어떤 애플리케이션은 추가 스토리지가 필요하지만, 그 데이터가 재시작 후에도 지속되어야 하는지는 신경 쓰지 않아요. 예를 들어 캐싱 서비스는 흔히 메모리 크기에 제한되는데, 자주 사용되지 않는 데이터를 성능에 큰 영향을 주지 않고 메모리보다 느린 스토리지로 옮길 수 있어요.
다른 애플리케이션은 구성 데이터나 secret 키 같은 일부 읽기 전용 입력 데이터가 파일로 존재하기를 기대해요.
일시적 볼륨은 이런 사용 사례를 위해 설계됐어요. 볼륨이 Pod의 수명주기를 따르고 Pod와 함께 생성·삭제되므로, Pod는 어떤 영구 볼륨이 사용 가능한 곳에 제한받지 않고 중지·재시작될 수 있어요.
일시적 볼륨은 Pod 스펙에 인라인으로 지정돼요. 이는 애플리케이션 배포와 관리를 단순화해요.
일시적 볼륨의 유형 (Types of ephemeral volumes)
쿠버네티스는 서로 다른 목적을 위한 여러 종류의 일시적 볼륨을 지원해요:
- emptyDir: Pod 시작 시 비어 있으며, 스토리지는 kubelet 기본 디렉터리(보통 루트 디스크) 또는 RAM에서 로컬로 제공됨
- configMap, downwardAPI, secret: 서로 다른 종류의 쿠버네티스 데이터를 Pod에 주입함
- image: 컨테이너 이미지 파일이나 아티팩트를 Pod에 직접 마운트할 수 있게 함
- CSI 일시적 볼륨: 앞선 볼륨 종류와 비슷하지만, 이 기능을 특별히 지원하는 특수 CSI 드라이버가 제공함
- 일반 일시적 볼륨(generic ephemeral volumes): 영구 볼륨도 지원하는 모든 스토리지 드라이버가 제공할 수 있음
emptyDir, configMap, downwardAPI, secret은 로컬 일시적 스토리지로 제공돼요. 각 노드에서 kubelet이 관리해요.
CSI 일시적 볼륨은 제3자 CSI 스토리지 드라이버가 제공해야 해요.
일반 일시적 볼륨은 제3자 CSI 스토리지 드라이버가 제공할 수 있지만, 동적 프로비저닝을 지원하는 다른 스토리지 드라이버도 제공할 수 있어요. 일부 CSI 드라이버는 CSI 일시적 볼륨을 위해 특별히 작성되어 동적 프로비저닝을 지원하지 않는데, 그런 드라이버는 일반 일시적 볼륨에는 사용할 수 없어요.
제3자 드라이버를 사용하는 장점은 쿠버네티스 자체가 지원하지 않는 기능을 제공할 수 있다는 거예요. 예를 들어 kubelet이 관리하는 디스크와 다른 성능 특성의 스토리지, 또는 다른 데이터를 주입하는 기능 등이죠.
CSI 일시적 볼륨 (CSI ephemeral volumes)
기능 상태:
Kubernetes v1.25 [stable]
참고 (Note)
CSI 일시적 볼륨은 일부 CSI 드라이버에서만 지원돼요. Kubernetes CSI Drivers 목록에서 어떤 드라이버가 일시적 볼륨을 지원하는지 확인할 수 있어요.
개념적으로 CSI 일시적 볼륨은 configMap, downwardAPI, secret 볼륨 유형과 비슷해요. 스토리지가 각 노드에서 로컬로 관리되고, Pod가 노드에 스케줄된 후 다른 로컬 리소스와 함께 생성되죠. 쿠버네티스는 이 단계에서 Pod를 다시 스케줄(reschedule)하는 개념이 없어요. 그래서 볼륨 생성은 Pod가 스케줄된 노드에서 로컬 리소스와 함께 이루어지게 돼요.