Kubernetes 환경에서 Container는 기본적으로 일시적인 실행 환경입니다.
Pod가 삭제되거나 재생성되면 Container 내부에 저장된 데이터는 사라질 수 있습니다.
예:
Application Container 실행
↓
파일 저장
↓
Pod 삭제
↓
Container 데이터 삭제
이 문제를 해결하기 위해 Kubernetes는 Persistent Volume(PV) 구조를 제공합니다.
Persistent Volume은 Container와 Storage를 분리하여 데이터를 안정적으로 유지하는 Kubernetes 핵심 Storage 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| PV | 실제 Storage 자원 |
| PVC | Storage 요청 |
| StorageClass | 동적 Storage 생성 |
| CSI | Storage 연결 표준 |
| Pod | Storage 사용 |
Persistent Volume 구조를 이해하면 Database, File Storage, Stateful Application 운영 방식을 이해할 수 있습니다.
Kubernetes Persistent Volume이 필요한 이유
Container 환경에서는 Application과 데이터 저장 위치를 분리해야 합니다.
기존 방식:
Container
↓
내부 저장
↓
Container 삭제
↓
데이터 손실
Kubernetes 방식:
Pod
↓
PVC 요청
↓
PV 연결
↓
외부 Storage 사용
Application 생명주기와 데이터를 분리할 수 있습니다.
Kubernetes Storage Architecture 구조
전체 흐름:
User
↓
Pod
↓
PersistentVolumeClaim
↓
PersistentVolume
↓
Storage Backend
예:
Pod
↓
PVC
↓
AWS EBS
또는
NFS
또는
Ceph Storage
Storage Layer를 독립적으로 관리합니다.
Kubernetes Persistent Volume(PV)이란?
PV는 Kubernetes Cluster에서 사용할 수 있는 Storage 자원입니다.
관리자가 미리 생성하거나 StorageClass를 통해 자동 생성됩니다.
예:
Storage:
100GB
↓
PV 생성
↓
PVC 연결
PV는 실제 저장 공간을 Kubernetes Resource 형태로 표현한 것입니다.
Kubernetes Persistent Volume Claim(PVC)이란?
PVC는 Application이 Storage를 요청하는 객체입니다.
예:
Application 요청:
Memory:
2GB
Storage:
50GB
↓
PVC 생성
↓
조건에 맞는 PV 연결
개발자는 실제 Storage 위치를 몰라도 됩니다.
Kubernetes PV와 PVC 관계
구조:
Pod
↓
PVC
↓
PV
↓
Storage
역할 분리:
Application 개발자:
PVC 요청
Infrastructure 관리자:
PV 제공
운영 관리가 쉬워집니다.
Kubernetes PV Access Mode
PV는 접근 방식을 정의합니다.
| Mode | 설명 |
|---|---|
| ReadWriteOnce | 하나의 Node에서 읽기/쓰기 |
| ReadOnlyMany | 여러 Node 읽기 전용 |
| ReadWriteMany | 여러 Node 읽기/쓰기 |
Storage 종류에 따라 지원 여부가 다릅니다.
Kubernetes Storage Capacity 관리
PV에는 용량 정보가 정의됩니다.
예:
capacity:
storage: 100Gi
PVC 요청:
resources:
requests:
storage: 50Gi
조건이 맞으면 연결됩니다.
Kubernetes Persistent Volume Lifecycle
PV는 여러 상태를 가집니다.
| 상태 | 설명 |
|---|---|
| Available | 사용 가능 |
| Bound | PVC 연결 완료 |
| Released | 사용 종료 |
| Failed | 오류 상태 |
Storage 운영에서 상태 확인이 중요합니다.
Kubernetes Dynamic Provisioning
과거 방식:
관리자가 PV 직접 생성
현재 방식:
PVC 생성
↓
StorageClass 확인
↓
자동 PV 생성
↓
Storage 연결
Cloud 환경에서는 Dynamic Provisioning이 일반적입니다.
Kubernetes CSI(Container Storage Interface)
CSI는 Storage 연결 표준입니다.
구조:
Kubernetes
↓
CSI Driver
↓
Storage Provider
지원:
- AWS EBS
- Azure Disk
- Google Persistent Disk
- Ceph
- NFS
다양한 Storage를 연결할 수 있습니다.
Kubernetes StorageClass 역할
StorageClass는 Storage 생성 정책입니다.
설정:
- Storage 종류
- Provisioner
- Performance 옵션
예:
빠른 SSD Storage
↓
StorageClass 생성
↓
PVC 요청
↓
자동 PV 생성
운영 환경에서 매우 중요합니다.
Kubernetes Stateful Application과 PV
Database는 데이터 유지가 필수입니다.
예:
MySQL Pod
↓
PVC
↓
Persistent Storage
Pod가 재생성되어도:
Database Data 유지
가능합니다.
Kubernetes Volume과 Container 차이
Container 내부 Storage:
임시 데이터
Volume:
외부 연결 Storage
Persistent Volume:
장기 데이터 저장
Application 종류에 따라 선택합니다.
Kubernetes PV 장애 분석
Storage 문제가 발생하면 확인합니다.
PV 확인:
kubectl get pv
PVC 확인:
kubectl get pvc
상세 확인:
kubectl describe pvc pvc-name
확인:
- Binding 상태
- StorageClass
- Provisioner
- Event
Kubernetes PVC Pending 문제
대표 장애:
PVC 생성
↓
PV 없음
↓
StorageClass 오류
↓
PVC Pending
확인:
kubectl describe pvc
Event에서 원인을 확인합니다.
Kubernetes Storage Backup 전략
Production 환경에서는 Backup이 필수입니다.
방법:
- Snapshot
- Replication
- External Backup
- Database Backup
Storage 장애에 대비해야 합니다.
Kubernetes Storage Security
관리:
- Encryption
- Access Control
- Secret 관리
- Network 제한
특히 Database Storage는 보안 관리가 중요합니다.
Kubernetes Storage Monitoring
확인 항목:
- Disk Usage
- I/O Latency
- Volume Error
- Provisioning 상태
Monitoring 시스템과 연결합니다.
Kubernetes Persistent Volume 운영 전략
Production 환경:
StorageClass 설계
↓
PVC 정책 설정
↓
Backup 구성
↓
Monitoring
↓
Recovery 테스트
안정적인 데이터 운영 환경을 구축할 수 있습니다.
Kubernetes Persistent Volume 장점
| 장점 | 설명 |
|---|---|
| 데이터 유지 | Pod 삭제 후 보존 |
| 관리 분리 | Application과 Storage 분리 |
| 확장성 | Cloud Storage 연결 |
| 운영 안정성 | Backup 가능 |
Persistent Volume은 Kubernetes Stateful 운영의 핵심입니다.
자주 묻는 질문
Pod가 삭제되면 PV 데이터도 삭제되나요?
설정된 Reclaim Policy에 따라 다릅니다.
보존 정책이면 데이터가 유지됩니다.
PVC 없이 Storage를 사용할 수 있나요?
가능한 경우도 있지만 Production 환경에서는 PVC 사용이 일반적입니다.
Database도 Kubernetes에서 운영 가능한가요?
가능합니다.
StatefulSet과 Persistent Volume을 함께 사용합니다.
마무리
Kubernetes Persistent Volume은 Container 환경에서 데이터를 안전하게 유지하기 위한 핵심 Storage Architecture입니다.
| 구성 요소 | 역할 |
|---|---|
| PV | 실제 Storage |
| PVC | Storage 요청 |
| StorageClass | 자동 생성 정책 |
| CSI | Storage 연결 |
Persistent Volume 구조를 이해하면 Kubernetes에서 Database와 Stateful Application을 안정적으로 운영할 수 있습니다.
다음 글에서는 Kubernetes Storage 자동화 영역인 Kubernetes StorageClass 완벽 가이드! Dynamic Provisioning과 자동 Storage 생성 구조 이해하기를 진행하겠습니다.