데이터는 어떻게 살아남는가? 볼륨(Volume)과 상태 유지
휘발성인 파드가 죽어도 소중한 데이터(DB, 파일 등)가 소실되지 않도록 외부에 데이터를 저장하는 볼륨을 이해합니다.
컨테이너와 파드는 언제든지 죽고 새로 태어날 수 있는 '소모품'입니다. 파드가 삭제되면 그 안에 저장해둔 파일들도 함께 흔적도 없이 사라집니다. 그렇다면 영구적으로 보존해야 하는 사용자의 이미지나 데이터베이스 정보는 어디에 저장해야 할까요? 쿠버네티스의 볼륨(Volume) 개념을 알아봅니다.
상태가 없는 서버(Stateless)의 역설
현대적인 애플리케이션 아키텍처에서는 서버를 상태 비저장(Stateless)으로 만드는 것을 권장합니다. 서버가 사용자의 로그인 정보나 업로드한 파일을 직접 들고 있지 않아야, 언제든 파드를 교체하거나 10개, 100개로 스케일 아웃(Scale Out)하기 쉽기 때문입니다.
하지만 세상의 모든 서비스는 결국 어딘가에 데이터를 저장해야 합니다. 즉, 누군가는 반드시 상태(State)를 짊어져야 합니다. 파드가 죽고 다시 태어나는 과정에서도 꿋꿋하게 데이터를 유지하는 방법이 필요한 것입니다.
로컬 디스크의 한계
단일 서버 시절에는 просто 하드디스크 특정 폴더(예: `/var/data`)에 파일을 저장하면 끝이었습니다. 하지만 쿠버네티스 클러스터는 여러 대의 노드(컴퓨터)로 이루어져 있습니다.
만약 '노드 A'에서 실행 중이던 파드가 죽고 '노드 B'에서 다시 실행된다면, 새로운 파드는 '노드 A'의 하드디스크에 접근할 수 없습니다. 따라서 클러스터 외부나 공유된 저장 공간을 파드에 연결해주는 기술이 필요합니다.
파드와 데이터 보존의 관계
파드는 임시 자원이며 언제든 삭제될 수 있다
→파드 내부에 저장된 파일은 파드와 함께 소멸한다.
파드가 클러스터 내의 다른 노드(서버)에서 재시작될 수 있다
→특정 노드의 로컬 디스크에 의존하면 데이터를 잃을 수 있다.
볼륨(Volume)과 영구 저장소(PV/PVC)
쿠버네티스는 파드가 죽어도 데이터가 살아남을 수 있도록 외부 저장 장치를 연결해주는 볼륨(Volume)이라는 개념을 제공합니다.
볼륨은 AWS의 EBS나 구글 클라우드의 영구 디스크(Persistent Disk), 혹은 네트워크 파일 시스템(NFS) 등 물리적이거나 클라우드 기반의 저장소와 파드를 이어주는 다리 역할을 합니다.
볼륨의 마운트 구조
볼륨을 사용하면 파드 내부의 특정 경로와 외부 디스크가 연결(Mount)됩니다.
# 파드 설정의 일부
containers:
- name: my-database
image: mysql:8.0
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: my-pvc데이터베이스 파드가 죽어도 외부 볼륨에 데이터가 남아있으므로, 새로운 파드가 생성되면서 다시 볼륨을 마운트하여 복구됩니다.
PV와 PVC: 창고와 보관증
쿠버네티스는 이 저장소를 효과적으로 관리하기 위해 PV(Persistent Volume)와 PVC(Persistent Volume Claim)라는 두 가지 개념을 분리했습니다.
- PV(창고): 실제로 클러스터 관리자가 마련해둔 100GB짜리 하드디스크 등의 물리적인 저장 공간입니다.
- PVC(보관증): 개발자가 "나 10GB짜리 저장 공간이 필요해"라고 쿠버네티스에게 요구하는 요청서입니다.
개발자는 어떤 회사의 하드디스크가 꽂혀 있는지 알 필요 없이 PVC만 달라고 요청하면 됩니다. 그러면 쿠버네티스가 알아서 적절한 PV를 찾아 파드에 딱 붙여줍니다. 인프라 영역과 애플리케이션 영역을 깔끔하게 분리한 매우 쿠버네티스다운 설계입니다.
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.쿠버네티스 파드가 삭제되었을 때 데이터 손실을 막기 위해 사용하는 가장 적절한 기술은 무엇인가요?
3줄 요약
- 1파드는 임시적인 자원이므로 내부에 저장된 파일은 파드가 재시작되면 모두 날아갑니다.
- 2쿠버네티스의 볼륨(Volume)을 사용하면 파드가 죽어도 외부 저장소의 데이터는 안전하게 보존됩니다.
- 3개발자는 물리적인 디스크의 종류를 몰라도 PVC(저장소 요청)를 통해 파드에 데이터를 연결할 수 있습니다.