Kubernetes Storage

2026. 6. 13. 17:00Kubernetes


Ⅰ. Storage (스토리지)

Storage

(스토리지)
항목 설명
개념 컨테이너 내부에 저장된 데이터는 컨테이너가 삭제될 때 함께 삭제되므로,

영속적으로 유지하려면 외부 스토리지 (볼륨)에도 데이터 저장해야 함
역할 Pod 재시작, 스케줄 변경, 재배포 시에도 데이터 유지
DB, 로그, 설정 파일 등 영속적 데이터 보존
노드 간 데이터 공유 및 관리
특징 컨테이너가 삭제되어도 데이터가 유지될 수 있도록 볼륨(volume) 사용
볼륨은 Pod 생명주기와 독립적으로 존재 가능
스토리지 종류에 따라 관리 및 성능 차이 발생
유형 유형 설명
EmptyDir Pod 내 임시 스토리지 
Pod 삭제 시 데이터도 함께 삭제
hostPath 노드 (Local)의 특정 디렉터리를 Pod에 마운트 (개발 및 디버깅용)
NFS / iSCSI 외부 네트워크 스토리지 사용 (여러 Pod 간 공유 가능)
Cloud Storage AWS EBS, GCE PD, Azure Disk 등 클라우드 외부 스토리지 사용

 

 


Ⅰ - Ⅰ. Volumes (볼륨)

Volume

(볼륨)
구분 설명
개념 Kubernetes Storage에서 Pod의 수명과 독립적으로 데이터를 저장하기 위한 논리적 저장소
역할 컨테이너가 삭제되거나 재시작되어도 데이터가 유지되도록 함
특징
Pod 내부의 모든 컨테이너가 볼륨 공유 가능
NFS, iSCSI, PersistentVolume 등 다양한 스토리지 백엔드 사용 가능
Pod가 삭제될 때 함께 삭제 가능
PersistentVolume을 통해 영속적으로 유지 가능
볼륨 유형 유형 설명
NFS 네트워크 파일 시스템 (여러 노드가 같은 공유 폴더 사용 가능)
SCSI 전통적인 블록 스토리지 인터페이스
hostPath 노드 (호스트)의 특정 경로를 Pod 내부에 마운트
EBS (Elastic Block Store) AWS 전용 블록 스토리지
FC (Fibre Channel) 고성능 SAN (스토리지 전용 네트워크) 방식
Cinder OpenStack 기반 블록 스토리지
GCE PD (Persistent Disk) Google Cloud의 영구 디스크
Azure Disk Microsoft Azure의 블록 스토리지

 


Ⅰ - Ⅱ. hostPath Volume

hostPath Volume
항목 설명
개념 노드 (호스트)의 실제 디렉터리를 컨테이너 내부에 마운트하는 볼륨
장점
속도가 빠르고 설정 간단
호스트 파일 접근 가능
단점
Pod가 다른 노드로 이동할 경우, 데이터 손실 가능
클러스터 내 이식성 낮음
유의점
모든 노드에 동일한 경로가 존재해야 함
보안상 민감 파일 마운트 주의 필요
활용 사례
로컬 로그 수집
디버깅
노드 임시 파일 저장
호스트 설정 파일 접근

 

 

node1에서 mkdir -p /web 명령을 통해 /web 디렉터리 생성

 

(-p 옵션으로 인해 상위 디렉터리가 없는 경우, 함께 생성)

 

echo "<h1><p style="color:red">node1</h1></p>" > /web/index.html 명령을 통해 index.html 파일 생성

 

 

node2에서 mkdir -p /web 명령을 통해 /web 디렉터리 생성

 

(-p 옵션으로 인해 상위 디렉터리가 없는 경우, 함께 생성)

 

echo "<h1><p style="color:blue">node2</h1></p>" > /web/index.html 명령을 통해 index.html 파일 생성

 

 

node3에서 mkdir -p /web 명령을 통해 /web 디렉터리 생성

 

(-p 옵션으로 인해 상위 디렉터리가 없는 경우, 함께 생성)

 

echo "<h1><p style="color:green">node3</h1></p>" > /web/index.html 명령을 통해 index.html 파일 생성

 

 

cd kube 명령을 통해 홈 디렉터리에서 kube 디렉터리로 이동

 

cd 13 명령을 통해 kube 디렉터리에서 kube/13 디렉터리로 이동

 

ls 명령을 통해 해당 디렉터리에 내 목록 확인

 

cd storage/ 명령을 통해 kube/13 디렉터리에서 kube/13/storage 디렉터리로 이동

 

ls 명령을 통해 해당 디렉터리 내 목록 확인

 

 

vi hostpath.yml 명령을 통해 vi 편집기 사용하여 hostpath.yml 파일 생성하고 내용 입력

 

 

# hostpath-pod 리소스 생성 (Pod 리소스)

 

kubectl create –f hostpath.yml 명령을 통해 hostpath.yml 파일 사용하여 hostpath-pod 리소스 생성

 

kubectl get pod –o wide 명령을 통해 리소스가 잘 생성되었는지 확인

 

 

# hostpath.yml 파일과 그와 관련된 리소스 등 삭제

 

kubectl delete –f hostpath.yml 명령을 통해 hostpath.yml 파일과 그와 관련된 리소스 등 모두 삭제

 


Ⅰ - Ⅲ. emptyDir Volume

emptyDir Volume 구분 설명
개념 Pod가 생성될 때 자동으로 만들어지는 빈 디렉터리
Pod 삭제 시 데이터도 함께 삭제되는 임시 스토리지
동작 원리 Pod가 노드에 스케줄링될 때, Kubernetes가 해당 노드의 디스크 공간 일부를 할당하여

Pod 내부 컨테이너 간 공유용 저장소로 사용
생성 시점 Pod가 생성될 때 자동 생성
데이터 유지 기간 Pod가 살아있는 동안만 유지 (Pod 삭제 시 함께 삭제)
저장 위치 Pod가 실행 중인 노드의 디스크 공간
주요 특징 같은 Pod 내 여러 컨테이너 데이터 공유 가능
노드 간 이동 시 데이터 유지 불가
속도 빠르고 설정 간단
유형 선택 medium : Memory 옵션 사용 시 디스크 대신 RAM 기반 (tmpfs) 저장 가능
활용 사례 컨테이너 간 임시 파일 공유
캐시 데이터 저장
빠른 I / O 작업용 임시 디렉터리

 

● hostPath Volume과 emptyDir Volume 비교

구분 emptyDir Volume hostPath Volume
저장 위치 노드의 임시 영역 (Pod별 자동 생성) 노드의 지정된 실제 경로
생성 시점 Pod 생성 시 자동 생성 YAML에서 명시적으로 지정
데이터 보존 Pod 삭제 시 데이터 같이 삭제 Pod 삭제 후에도 노드에 남음
파일 공유 가능성 같은 Pod 내 컨테이너 간 공유 같은 노드의 다른 Pod와도 공유 가능
대표 사용 예시

컨테이너 간 임시 파일 공유 로컬 로그, 호스트 설정 파일, 테스트용 마운트
캐시 데이터 저장

 

 

 

vi emptrydir.yml 명령을 통해 vi 편집기 사용하여 emptydir.yml 파일 생성 및 내용 입력

 

 

# emptydir-pod 리소스 생성 (Pod)

 

kubectl create –f emptydir.yml 명령을 통해 emptydir.yml 파일 이용하여 emptydir-pod 리소스 생성

 

kubectl get pod –o wide 명령을 통해 잘 생성되었는지 확인

 

 

# emptydir-pod 리소스 내부 genid 컨테이너 동작

 

kubectl exec emptydir-pod -c genid 명령을 통해 emptydir-pod 리소스 내부 genid 컨테이너로 진입하도록 설정

 

--ls /webdata 명령을 통해 emptyDir 볼륨이 마운트된 /webdata 디렉터리 목록 확인

 

 

# emptydir-pod 리소스 내부 webserver 컨테이너 동작

 

kubectl exec emptydir-pod -c webserver 명령을 통해

 

emptydir-pod 리소스 내부 webserver 컨테이너로 진입하도록 설정

 

-- ls /usr/share/nginx/html 명령을 통해 /usr/share/nginx/html 디렉터리 목록 확인

 

curl http://172.16.104.30 명령을 통해 Pod 내부에서 실행 중인 Nginx 웹서버에 접속 테스트

 

 

# emptydir.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

kubectl delete –f emptydir.yml 명령을 통해 emptydir.yml 파일과 그와 관련된 리소스 등 모두 삭제

 

'Kubernetes' 카테고리의 다른 글

Kubernetes 명령어  (0) 2026.06.13
Kubernetes Secret  (0) 2026.06.13
Kubernetes ConfigMap  (0) 2026.06.13
Kubernetes Label과 Annotation  (0) 2026.06.13
Kubernetes Ingress  (0) 2026.06.13