← 목차
Week 5 · Phase 2 핵심 오브젝트

스토리지
PV/PVC · CSI · StatefulSet

스토리지 추상화(PV/PVC/StorageClass), 동적 프로비저닝, CSI 드라이버, 그리고 상태 있는 워크로드
학습 자료 · k8s-storage · (심화) csi-comparison
산출물 · MySQL StatefulSet + 백업

학습 목표

"영속 데이터를 어떻게 안전하게 다루나"
  • PV/PVC 분리 — 왜 스토리지 제공(관리자)과 요청(개발자)을 나누는지 설명한다
  • StorageClass + 동적 프로비저닝 — PV 자동 생성을 구현한다
  • CSI 아키텍처 — 표준 인터페이스를 이해하고 vSphere CSI를 활용한다
  • StatefulSet — 안정적 ID·영속 스토리지가 필요한 워크로드를 배포한다

스토리지 3단계 추상화

개발자는 "요청"만, 실제 볼륨은 자동으로
① PVC (요청)개발자: "1Gi 볼륨 주세요"accessMode · size · class bind → ② StorageClass동적 프로비저너가PV를 자동 생성 provision → ③ PV (실제 볼륨)CSI가 백엔드에 볼륨 생성vSAN/NFS/EBS... PVC(요청)와 PV(실체)를 분리 → 개발자는 인프라를 몰라도 되고, 관리자는 백엔드를 자유롭게 교체 가능 ReclaimPolicy — Retain(보존) · Delete(삭제) · Recycle(재활용)

AccessMode & StatefulSet

어떻게 붙이나, 그리고 상태 있는 워크로드
AccessMode

볼륨 접근 방식

  • RWO (ReadWriteOnce) — 단일 노드 읽기·쓰기
  • ROX (ReadOnlyMany) — 다중 노드 읽기
  • RWX (ReadWriteMany) — 다중 노드 읽기·쓰기(NFS 등)
  • RWOP — 단일 Pod 전용
StatefulSet

vs Deployment

  • 안정적 ID — pod-0, pod-1 순서 보장
  • Headless Service로 각 Pod에 고유 DNS
  • volumeClaimTemplates — Pod별 전용 PVC
  • → DB·메시지큐 등 상태 워크로드

CSI 드라이버 아키텍처

In-Tree 한계를 벗어난 표준 스토리지 인터페이스
Kubernetes (kube-controller / kubelet) CONTROLLERProvisionerPVC 감지 → 볼륨 생성/삭제Attacher — 노드에 연결 NODENode Plugin볼륨 mount/unmount각 노드 DaemonSet BACKENDStorage 시스템vSphere CSI · TridentEBS · Rook-Ceph · NFS CSI = 스토리지 벤더가 K8s 코드 수정 없이 플러그인 제공 · VolumeSnapshot으로 스냅샷/복원 지원

라이브 실습 — 동적 PVC & StatefulSet

자동 프로비저닝과 상태 워크로드
# 동적 프로비저닝 PVC kind: PersistentVolumeClaim spec: {accessModes: [ReadWriteOnce], storageClassName: <default-sc>, resources: {requests: {storage: 1Gi}}} $ kubectl get pv,pvc # 자동 생성된 PV 확인 # StatefulSet — Pod별 전용 볼륨 kind: StatefulSet spec: {serviceName: mysql-headless, replicas: 3, volumeClaimTemplates: [{... storage: 5Gi}]} $ kubectl get csidriver # vSphere CSI 확인

과제 — 영속성 검증

데이터가 진짜 살아남는지 확인
기본

영속·스냅샷·쿼터

  • StatefulSet PostgreSQL → Pod 삭제·재생성 후 데이터 유지 검증
  • VolumeSnapshot으로 PVC 스냅샷 → 새 PVC로 복원
  • ResourceQuota로 스토리지 초과 시 PVC 실패 확인
심화

CSI 비교

  • 2개 이상 CSI(예: vSphere CSI + NFS) 설치
  • 동일 워크로드 성능·기능 비교 표 작성

체크리스트 & 다음 주

이걸 할 수 있으면 Week 5 완료
  • PV/PVC/StorageClass 3단계 추상화를 그림으로 그릴 수 있다
  • AccessMode(RWO/ROX/RWX/RWOP)를 구분할 수 있다
  • StatefulSet의 안정적 ID와 Headless Service의 관계를 안다
  • CSI의 Provisioner/Attacher/NodePlugin 역할을 안다
→
다음 주(Week 6) — 보안: 인증·인가, RBAC 4대 리소스, ServiceAccount, Pod Security Admission을 다룹니다.