본문으로 건너뛰기

Day 5 - Kubernetes Volume

Day 5 - Kubernetes Volume

목차


1. Pod Volume - emptyDir

volume

두 컨테이너가 emptyDir 볼륨을 공유하는 예제

spec:
containers:
- name: pod-temp-1
image: ubuntu:24.04
volumeMounts:
- name: pod-vol
mountPath: /data1
- name: pod-temp-2
image: ubuntu:24.04
volumeMounts:
- name: pod-vol
mountPath: /data2
volumes:
- name: pod-vol
emptyDir: {}
# 컨테이너 1에서 파일 생성
kubectl exec -it pod-temp -c pod-temp-1 -- bash -c "echo 'Hello' > /data1/a.txt"

# 컨테이너 2에서 확인
kubectl exec -it pod-temp -c pod-temp-2 -- cat /data2/a.txt

2. 컨테이너 유지 - sleep command

sleep

command: ["/bin/sh", "-c", "sleep infinity"]

command vs stdin/tty

항목commandstdin/tty
컨테이너 유지sleep infinity터미널 대기
리소스sleep 프로세스입력 대기

3. hostPath 볼륨

hostPath

노드의 파일 시스템을 Pod에 마운트

volumes:
- name: pod-vol
hostPath:
path: /home/pista/pub
type: DirectoryOrCreate
# 노드에서 파일 생성
ssh k8s-n2 'echo "<h1>Hello!</h1>" > /home/pista/pub/index.html'

# Pod에서 확인
curl http://<PodIP>:80

emptyDir vs hostPath

항목emptyDirhostPath
저장 위치Pod 내부노드 파일시스템
Pod 삭제 시데이터 삭제데이터 유지

4. PersistentVolume 생성

pv

apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /DATA1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- {key: kubernetes.io/hostname, operator: In, values: [k8s-n1]}

Access Modes

모드약자설명
ReadWriteOnceRWO단일 노드 읽기/쓰기
ReadOnlyManyROX다중 노드 읽기
ReadWriteManyRWX다중 노드 읽기/쓰기

5. PersistentVolumeClaim 생성

pvc

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-1
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 1Gi

PV vs PVC

항목PVPVC
역할스토리지 제공스토리지 요청
범위ClusterNamespace
관리자인프라 관리자개발자

6. Pod - PVC 연동

pod-pvc

volumes:
- name: pod-vol
persistentVolumeClaim:
claimName: pvc-1
# 노드에 디렉토리 생성
ssh k8s-n1 "sudo mkdir /DATA1"

# 파일 생성
ssh k8s-n1 'sudo bash -c "echo \"<h1>Hello from PV!</h1>\" > /DATA1/index.html"'

# 확인
curl http://<PodIP>

7. PV/PVC 매칭 실습

matching

PV 4개, PVC 5개 생성 시 매칭 결과

PVCStorageClass상태연결된 PV
pvc-1local-storageBoundpv-1
pvc-2local-storageBoundpv-2
pvc-3local-storageBoundpv-3
pvc-4local-storage-2Boundpv-4
pvc-5local-storage-2Pending없음

pvc-5는 매칭할 PV가 없어서 Pending 상태

result


관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: Day 5 - Kubernetes Volume
노드 클릭 → 이동 · 드래그 → 위치 조정