컨테이너 환경에서 별도 설정을 하지 않으면 데이터는 호스트 노드의 임시 디스크(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와 함께 삭제된다.
'Kubernetes > 활용' 카테고리의 다른 글
MetalLB를 이용한 로드밸런서 타입 서비스 구축 (0) | 2024.02.23 |
---|---|
kube-proxy 부하분산 설정의 이해 (0) | 2024.02.23 |
쿠버네티스 DNS 기능 이해 (0) | 2024.02.22 |
쿠버네티스 서비스(service) 사용하기 (1) (0) | 2024.02.22 |
Helm 헬름 활용(3) (0) | 2024.02.19 |