볼륨 타입
Kubernetes의 다양한 볼륨 타입과 사용처 완벽 가이드
Kubernetes의 다양한 볼륨 타입과 사용처 완벽 가이드
목표: 상황에 맞는 볼륨 타입을 선택하고 구성할 수 있는 수준
📦 볼륨 타입 비교
| 타입 | 수명 | 공유 | 사용처 |
|---|---|---|---|
| emptyDir | Pod | 컨테이너 간 | 임시 데이터, 캐시 |
| hostPath | 노드 | 노드 상에서 | 로그, 설정 (단일 노드) |
| nfs | 외부 | 다중 노드 | 공유 스토리지 |
| persistentVolumeClaim | 외부 | PVC에 따라 | 영구 데이터 |
| configMap/secret | 클러스터 | 다중 Pod | 설정, 인증서 |
| csi | 외부 | 드라이버에 따라 | 클라우드 스토리지 |
💾 emptyDir
Pod가 살아있는 동안만 존재하는 임시 볼륨.
apiVersion: v1
kind: Pod
metadata:
name: emptydir-demo
spec:
containers:
- name: writer
image: busybox
command: ["sh", "-c", "while true; do echo $(date) >> /data/log.txt; sleep 5; done"]
volumeMounts:
- name: shared-data
mountPath: /data
- name: reader
image: busybox
command: ["sh", "-c", "while true; do cat /data/log.txt; sleep 5; done"]
volumeMounts:
- name: shared-data
mountPath: /data
volumes:
- name: shared-data
emptyDir: {}
특징:
- 컨테이너 간 데이터 공유
- Pod 삭제 시 데이터 삭제
- 노드의 디스크/메모리 사용
🖥️ hostPath
노드의 파일시스템을 Pod에 마운트.
apiVersion: v1
kind: Pod
metadata:
name: hostpath-demo
spec:
containers:
- name: app
image: busybox
volumeMounts:
- name: host-log
mountPath: /var/log/host
volumes:
- name: host-log
hostPath:
path: /var/log
type: Directory
주의:
- 노드에 종속적 (Pod 이동 시 데이터 유실)
- 보안 위험 (노드 파일시스템 노출)
- DaemonSet에서 주로 사용
🌐 NFS
네트워크 파일시스템을 Pod에 마운트.
apiVersion: v1
kind: Pod
metadata:
name: nfs-demo
spec:
containers:
- name: app
image: nginx
volumeMounts:
- name: nfs-volume
mountPath: /usr/share/nginx/html
volumes:
- name: nfs-volume
nfs:
server: 192.168.1.100
path: /exports/data
특징:
- 다중 노드에서 공유 가능
- ReadWriteMany 지원
- NFS 서버 필요
🔧 CSI (Container Storage Interface)
개념
graph TB
subgraph "CSI 아키텍처"
KUBE["🔧 kubelet"] -->|"CSI gRPC"| DRIVER["📦 CSI Driver"]
DRIVER -->|"Provision"| CLOUD["☁️ Cloud Storage"]
DRIVER -->|"Attach"| NODE["💾 Node Volume"]
end
AWS EBS CSI
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
provisioner: ebs.csi.aws.com
parameters:
type: gp3
encrypted: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
사용
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ebs-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: ebs-sc
resources:
requests:
storage: 10Gi
📋 체크리스트
- emptyDir 사용처
- hostPath 주의사항
- NFS 구성
- CSI 드라이버 설치
- StorageClass 설정
- 볼륨 확장
🔗 관련 노트
- 02-06-PV-PVC-StorageClass — 동적 프로비저닝
- 02-08-스테이트풀-앱-배포 — 상태유지 앱
- 01-05-StatefulSet-관리 — StatefulSet
마지막 업데이트: 2026-06-01