클라우드 네이티브 스토리지란?
컨테이너 환경에서의 데이터 영속성은 스테이트리스 설계와 상충하는 도전 과제입니다. 정보처리기사에서는 쿠버네티스 스토리지 추상화와 다양한 스토리지 백엔드를 중요하게 다룹니다.
쿠버네티스 스토리지 계층
볼륨 추상화
- Volume: Pod 레벨 스토리지. Pod 생애주기와 동일. emptyDir·configMap·secret·hostPath
- PersistentVolume(PV): 클러스터 레벨 스토리지 리소스. 관리자가 프로비저닝하거나 동적 생성
- PersistentVolumeClaim(PVC): 사용자의 스토리지 요청. 용량·액세스 모드·StorageClass 지정
- StorageClass: 동적 프로비저닝 프로파일. Provisioner·파라미터·ReclaimPolicy 정의
접근 모드
- ReadWriteOnce(RWO): 단일 노드 읽기-쓰기. 대부분의 블록 스토리지
- ReadOnlyMany(ROX): 다수 노드 읽기 전용. 정적 콘텐츠 공유
- ReadWriteMany(RWX): 다수 노드 읽기-쓰기. NFS·CephFS·EFS
- ReadWriteOncePod(RWOP): 단일 Pod 읽기-쓰기. K8s 1.22+
CSI (Container Storage Interface)
- 개념: 스토리지 플러그인 표준 인터페이스. 벤더가 K8s 코어 수정 없이 플러그인 개발
- 주요 드라이버: AWS EBS CSI·GCP Persistent Disk CSI·Azure Disk CSI·Ceph RBD CSI·Longhorn
- 동적 프로비저닝 흐름: PVC 생성 → StorageClass로 CSI 호출 → 스토리지 볼륨 생성 → PV 자동 생성 → 바인딩
- Volume Snapshot: CSI로 스냅샷·클론 가능. VolumeSnapshot·VolumeSnapshotContent CRD
스토리지 유형별 비교
블록 스토리지
- 특성: 로우 디스크 블록 제공. 고성능. RWO만 지원(대부분)
- 사용 사례: DB(MySQL·PostgreSQL·MongoDB). 단일 Pod 워크로드
- AWS EBS: gp3(범용)·io2(고성능). 가용 영역 내 사용. 99.999% 내구성
파일 스토리지
- 특성: POSIX 파일시스템. NFS 프로토콜. RWX 지원. 다중 노드 공유
- AWS EFS: 완전관리형 NFS. 자동 스케일링. 가용 영역 간 공유
- CephFS: 분산 파일시스템. RADOS 기반. 온프레미스 선호
오브젝트 스토리지
- 특성: HTTP API 기반. 무제한 확장. 높은 내구성(11 9s). 버전 관리·수명주기 정책
- S3 API 호환: AWS S3·MinIO·Ceph RadosGW. 멀티클라우드 이식성
- 사용 사례: 미디어 저장·ML 데이터셋·백업·정적 웹 호스팅
데이터 관리 전략
- Velero: K8s 클러스터 백업·복구·마이그레이션. PV 스냅샷 + 리소스 백업
- Rook-Ceph: Ceph를 K8s 오퍼레이터로 관리. 블록·파일·오브젝트 스토리지 통합 제공
- Longhorn: 경량 분산 블록 스토리지. 엣지·소규모 클러스터에 적합
- StorageClass ReclaimPolicy: Retain(PVC 삭제 후 PV 보존)·Delete(PV 자동 삭제)·Recycle(deprecated)
시험 핵심 포인트
- PV/PVC 바인딩: PVC가 요구사항을 만족하는 PV와 1:1 바인딩
- RWX: 다수 노드 동시 쓰기 = NFS·CephFS·EFS. 블록 스토리지는 불가
- CSI: K8s와 스토리지 벤더 간 표준 인터페이스. In-tree 플러그인을 대체
- StorageClass: 동적 프로비저닝의 핵심. Provisioner 필드가 CSI 드라이버 지정
마무리
클라우드 네이티브 스토리지는 스테이트풀 애플리케이션을 컨테이너 환경에서 안정적으로 운영하기 위한 핵심 요소입니다. 워크로드 특성에 맞는 스토리지 유형과 접근 모드를 선택하는 것이 중요합니다.