본문 바로가기
Kubernetes/활용

쿠버네티스 스토리지

by lumination 2024. 2. 26.

컨테이너 환경에서 별도 설정을 하지 않으면 데이터는 호스트 노드의 임시 디스크(ephemeral disk)에 보관된다.

컨테이너를 삭제하면 임시 디스크에 있는 데이터는 저장되지 않고 컨테이너와 함께 삭제된다.

이러한 문제를 쿠버네티스에서는 파드와 데이터를 분리해서 영구 볼륨이라는 별도의 추상화된 리소스로 해결한다.

 

쿠버네티스 볼륨 구성 주요 리소스

  • 영구 볼륨(PV, PersistentVolume)
  • 영구볼륨 요청자(PVC, PersistentVolumeClaim)
  • 스토리지 클래스(StorageClass)

오픈소스 OpenEBS 로컬 호스트패스를 이용해 스토리지 클래스를 만들고 스토리지 관련 설정을 YAML로 작성해보자.


apiVersion: v1
kind: Pod
metadata:
  name: busybox
spec:
  containers:
  - name: busybox
    image: busybox
    command:
    - "/bin/sh"
    - "-c"
    - "while true; do date >> /home/pod-out.txt; cd /home; sync; sync; sleep 10; done"

data-busybox-pod.yaml

 

임시 디스크의 제약을 확인하기 위해 date 명령어로 현재 시간을 30초 간격으로 /home/pod-out.txt 파일에 저장한다.

 

kubectl apply -f date-busybox-pod.yaml

kubectl exec busybox -- cat /home/pod-out.txt

 

1분 뒤에 삭제하고 다시 파드를 생성한다.

kubectl delete pod busybox 

kubectl apply -f date-busybox-pod.yaml

kubectl exec busybox -- cat /home/pod-out.txt

 

이전에 생성했던 Pod의 데이터는 없다.

*임시 데이터는 Pod와 함께 삭제된다.