2026. 6. 13. 17:00ㆍKubernetes
Ⅰ. 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 |