스토리지 실습

난이도: 중급 예상 소요 시간: 40분 마지막 업데이트: 2026년 2월 11일

학습 목표

  • PersistentVolume(PV)과 PersistentVolumeClaim(PVC)을 생성합니다

  • Pod에서 볼륨을 마운트하여 사용합니다

  • emptyDir과 hostPath 볼륨 타입을 비교합니다

사전 요구 사항


실습 1: emptyDir 볼륨

단계

Step 1.1: emptyDir을 사용하는 Pod 생성

cat > /tmp/emptydir-pod.yaml << 'EOF'
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", "tail -f /data/log.txt"]
    volumeMounts:
    - name: shared-data
      mountPath: /data
  volumes:
  - name: shared-data
    emptyDir: {}
EOF

kubectl apply -f /tmp/emptydir-pod.yaml
kubectl wait --for=condition=ready pod/emptydir-demo --timeout=30s

Step 1.2: 컨테이너 간 데이터 공유 확인

chevron-right힌트가 필요하신가요?hashtag
  • emptyDir은 Pod가 노드에 할당될 때 생성되고, Pod가 삭제되면 함께 삭제됩니다

  • 같은 Pod 내 컨테이너 간 데이터 공유에 사용됩니다

  • K8s의 사이드카 패턴에서 자주 활용됩니다

검증


실습 2: PV/PVC 생성

단계

Step 2.1: PersistentVolume 생성

Step 2.2: PersistentVolumeClaim 생성

예상 결과:

Step 2.3: PVC를 사용하는 Pod 생성

Step 2.4: 데이터 영속성 테스트

chevron-right힌트가 필요하신가요?hashtag
  • PV는 클러스터 수준 리소스, PVC는 네임스페이스 수준 리소스입니다

  • Bound 상태는 PVC가 PV에 바인딩되었음을 의미합니다

  • persistentVolumeReclaimPolicy: Retain은 PVC 삭제 후에도 데이터를 보존합니다

검증


실습 3: 볼륨 타입 비교

단계

Step 3.1: 볼륨 정보 비교


정리

다음 단계

마지막 업데이트