쿠버네티스 스토리지 볼륨(Storage Volume)
1. 스토리지 볼륨 개념
쿠버네티스(Kubernetes)에서 볼륨(Volume)은 컨테이너가 재시작되거나 이동하더라도 데이터를 유지할 수 있도록 하는 저장소 개념입니다.
쿠버네티스는 기본적으로 컨테이너의 라이프사이클과 독립적인 스토리지를 제공하여 데이터가 손실되지 않도록 보장합니다.
스토리지 볼륨의 특징
컨테이너의 라이프사이클과 독립적
- 컨테이너가 종료되거나 다시 시작되더라도 볼륨이 유지될 수 있음.
Pod 단위의 볼륨 공유 가능
- 같은 Pod에 속한 여러 컨테이너가 동일한 볼륨을 공유할 수 있음.
다양한 스토리지 백엔드 지원
- 로컬 디스크, 네트워크 스토리지(NFS, Ceph, GlusterFS 등), 클라우드 스토리지(AWS EBS, GCP Persistent Disk, Azure Disk 등)와 통합 가능.
퍼시스턴트 볼륨(Persistent Volume, PV)과 클레임(Persistent Volume Claim, PVC) 제공
- 동적 스토리지 할당을 지원하여 스토리지 관리를 자동화할 수 있음.
2. 스토리지 볼륨 유형
쿠버네티스 볼륨은 크게 임시 볼륨(일반 볼륨)과 영구 볼륨(Persistent Volume, PV) 두 가지로 나뉩니다.
(1) 임시 볼륨 (일반 Volume)
Pod 내에서 컨테이너가 실행되는 동안만 유지되는 볼륨으로, Pod가 삭제되면 데이터도 사라집니다.
사용되는 주요 볼륨 유형은 다음과 같습니다.
- emptyDir
- Pod가 생성될 때 빈 디렉토리가 제공되며, Pod가 삭제되면 데이터도 삭제됨.
- 같은 Pod 내 여러 컨테이너가 데이터를 공유하는 용도로 사용됨.
- hostPath
- 워커 노드의 특정 디렉토리를 Pod 내에서 마운트하는 방식.
- 컨테이너가 재시작되거나 이동하면 데이터가 유지되지 않음.
- configMap & secret
- 설정 파일 및 민감한 정보를 저장하는 볼륨.
- 쿠버네티스 API를 통해 관리됨.
- emptyDir & downwardAPI
- Pod 내부에서 일시적인 데이터를 저장하거나, 환경 변수 및 리소스 정보를 공유하는 용도로 사용됨.
(2) 퍼시스턴트 볼륨 (Persistent Volume, PV)
Pod의 라이프사이클과 독립적으로 데이터를 보존할 수 있는 볼륨입니다.
**Persistent Volume(PV)**과 Persistent Volume Claim(PVC) 개념을 활용하여 관리됩니다.
- Persistent Volume (PV)
- 클러스터에서 관리하는 스토리지 리소스(NFS, 클라우드 디스크, SAN 등).
- 관리자는 PV를 미리 정의하여 사용할 수 있음.
- Persistent Volume Claim (PVC)
- Pod에서 필요한 스토리지를 요청하는 볼륨 클레임(Volume Claim).
- PVC를 통해 특정 용량과 액세스 모드를 지정할 수 있음.
- StorageClass
- 동적 볼륨 할당(Dynamic Provisioning)을 지원하는 클래스.
- 클라우드 스토리지(AWS EBS, GCP PD, Azure Disk 등)와 연계하여 자동으로 PV를 생성함.
3. 쿠버네티스 볼륨 구성 예제
✅ 임시 볼륨 (emptyDir) 사용 예시
- Pod 내부에서
/data
디렉토리를 공유하는 빈 디렉토리(emptyDir)를 생성. - Pod가 삭제되면 데이터도 함께 삭제됨.
✅ 퍼시스턴트 볼륨 (PV & PVC) 사용 예시
(1) Persistent Volume (PV) 정의
- 1Gi 용량을 가진 PV 생성.
ReadWriteOnce
모드(한 개의 노드에서만 읽기/쓰기 가능)./mnt/data
경로를 호스트에 마운트.
(2) Persistent Volume Claim (PVC) 요청
- 1Gi 크기의 영구 볼륨을 요청하는 PVC 정의.
- 쿠버네티스가 PV를 자동으로 할당함.
(3) PVC를 사용하는 Pod
pvc-demo
를 마운트하여/data
경로에서 사용.- Pod가 삭제되어도 PVC는 유지되므로 데이터가 보존됨.
🔹 정리
볼륨 유형 | 설명 | 데이터 유지 |
---|---|---|
emptyDir | Pod 내 임시 볼륨 | ❌ (Pod 삭제 시 데이터 삭제) |
hostPath | 노드의 특정 디렉토리를 마운트 | 🔄 (노드 삭제 시 데이터 유실) |
ConfigMap & Secret | 설정 및 민감한 정보 저장 | ✅ (쿠버네티스에서 관리) |
Persistent Volume (PV) | 클러스터가 관리하는 스토리지 | ✅ (Pod 삭제 후에도 유지) |
Persistent Volume Claim (PVC) | Pod에서 PV를 요청하는 방식 | ✅ (PVC가 삭제되지 않는 한 유지) |
StorageClass | 동적 스토리지 할당을 위한 설정 | ✅ (자동으로 PV 생성) |
🔹 쿠버네티스 볼륨 선택 가이드
- 임시 데이터 저장:
emptyDir
- 설정 파일 저장:
ConfigMap
,Secret
- 로컬 파일 접근:
hostPath
- 클러스터 내 영구 데이터 저장:
Persistent Volume (PV) + PVC
- 클라우드 기반 스토리지 사용:
StorageClass
(AWS EBS, GCP PD 등)
쿠버네티스에서 스토리지 볼륨을 활용하면 컨테이너의 상태를 유지하면서 유연한 데이터 관리가 가능