Kubernetes 환경에서 Container는 기본적으로 임시 저장 공간을 사용합니다.
Pod가 삭제되거나 다시 생성되면 Container 내부 데이터는 사라질 수 있습니다.
하지만 Database, File Storage, Backup System 같은 Application은 데이터를 지속적으로 보존해야 합니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Persistent Volume(PV) 구조를 제공합니다.
Persistent Volume은 Kubernetes Cluster에서 Storage를 추상화하여 Pod와 독립적으로 데이터를 관리할 수 있도록 하는 Storage Resource입니다.
| 구성 요소 | 역할 |
|---|---|
| Persistent Volume(PV) | 실제 Storage Resource |
| Persistent Volume Claim(PVC) | Storage 요청 |
| Storage Class | Storage 자동 생성 |
| Pod | Storage 사용 |
PV 구조를 이해하면 Kubernetes에서 Container 데이터가 어떻게 저장되고 유지되는지 이해할 수 있습니다.
Kubernetes Persistent Volume(PV)이란 무엇인가?
Persistent Volume(PV)은 Kubernetes Cluster에서 제공하는 지속적인 Storage Resource입니다.
Pod Lifecycle과 별도로 존재하며 Container가 종료되어도 데이터를 유지할 수 있습니다.
기존 Container Storage:
Pod 생성
↓
Container 실행
↓
데이터 저장
↓
Pod 삭제
↓
데이터 삭제
PV 사용:
Pod 생성
↓
PVC 연결
↓
PV Mount
↓
데이터 유지
이를 통해 Stateful Application 운영이 가능합니다.
Kubernetes PV가 필요한 이유
Container는 기본적으로 Stateless 환경을 목표로 합니다.
하지만 실제 운영 환경에서는 데이터를 저장해야 하는 Application이 많습니다.
예:
| Application | 필요 Storage |
|---|---|
| Database | 데이터 파일 |
| Log System | Log 저장 |
| File Server | 파일 관리 |
| Backup System | 백업 데이터 |
PV를 사용하면 Container와 데이터를 분리하여 안정적인 운영이 가능합니다.
Kubernetes Storage 구조
Kubernetes Storage는 여러 계층으로 구성됩니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Pod | Application 실행 |
| PVC | Storage 요청 |
| PV | Storage 제공 |
| Storage Backend | 실제 Disk |
동작:
Pod
↓
PVC 요청
↓
PV 연결
↓
Storage 사용
Application은 실제 Storage 위치를 알 필요가 없습니다.
Kubernetes Persistent Volume Claim(PVC)이란?
PVC는 Pod가 Storage를 요청하는 Resource입니다.
사용자는 직접 PV를 지정하지 않고 필요한 Storage 조건만 요청합니다.
예:
요청:
Storage:
100GB
Access Mode:
ReadWriteOnce
↓
Kubernetes
↓
조건에 맞는 PV 연결
PVC는 Application과 Storage 사이의 연결 역할을 합니다.
Kubernetes PV와 PVC 관계
PV와 PVC는 공급자와 사용자 관계입니다.
| 구분 | PV | PVC |
|---|---|---|
| 역할 | Storage 제공 | Storage 요청 |
| 생성 주체 | 관리자 또는 자동 생성 | 사용자 |
| 대상 | Cluster Storage | Application |
구조:
Storage Administrator
↓
PV 생성
Application Developer
↓
PVC 요청
Pod
↓
PVC 사용
Kubernetes PV Lifecycle
PV는 여러 상태를 가지며 Lifecycle을 관리합니다.
| 상태 | 설명 |
|---|---|
| Available | 사용 가능한 PV |
| Bound | PVC 연결 상태 |
| Released | PVC 삭제 후 상태 |
| Failed | 오류 상태 |
PV Lifecycle 관리는 데이터 보호에 중요합니다.
Kubernetes Access Mode란?
Access Mode는 Storage를 어떻게 사용할 수 있는지 정의합니다.
주요 방식:
| Mode | 설명 |
|---|---|
| ReadWriteOnce(RWO) | 하나의 Node에서 읽기/쓰기 |
| ReadOnlyMany(ROX) | 여러 Node 읽기 전용 |
| ReadWriteMany(RWX) | 여러 Node 읽기/쓰기 |
Application 요구사항에 맞는 Storage Mode를 선택해야 합니다.
Kubernetes Storage Class란?
Storage Class는 Storage를 자동으로 생성하기 위한 설정입니다.
관리자가 모든 PV를 직접 생성하지 않아도 Kubernetes가 필요한 Storage를 자동으로 만들 수 있습니다.
구조:
PVC 생성
↓
Storage Class 확인
↓
Storage Backend 호출
↓
PV 자동 생성
이를 Dynamic Provisioning이라고 합니다.
Kubernetes Dynamic Provisioning이란?
Dynamic Provisioning은 PVC 요청 시 자동으로 Storage를 생성하는 기능입니다.
기존 방식:
관리자
↓
PV 직접 생성
Dynamic 방식:
사용자
↓
PVC 생성
↓
Storage 자동 생성
Cloud 환경에서 많이 사용됩니다.
Kubernetes Static Provisioning과 Dynamic Provisioning 차이
| 구분 | Static Provisioning | Dynamic Provisioning |
|---|---|---|
| PV 생성 | 수동 | 자동 |
| 관리 방식 | 관리자 중심 | Kubernetes 자동화 |
| 운영 편의성 | 낮음 | 높음 |
| Cloud 환경 | 제한적 | 적합 |
Production 환경에서는 Dynamic Provisioning 사용이 일반적입니다.
Kubernetes PV Reclaim Policy란?
Reclaim Policy는 PVC 삭제 후 PV 데이터를 어떻게 처리할지 결정합니다.
주요 정책:
| 정책 | 설명 |
|---|---|
| Retain | 데이터 유지 |
| Delete | Storage 삭제 |
| Recycle | 재사용 처리(제한적) |
Database 환경에서는 Retain 정책을 고려해야 합니다.
Kubernetes Volume Mount 구조
PV는 Pod 내부 Container에 Mount되어 사용됩니다.
구조:
PV
↓
PVC
↓
Volume Mount
↓
Container
Application은 일반 Disk처럼 Storage를 사용할 수 있습니다.
Kubernetes PV와 StatefulSet 관계
StatefulSet은 Database 같은 Application 운영을 위해 PV와 함께 사용됩니다.
구조:
StatefulSet
↓
Pod-0
↓
PVC-0
↓
PV-0
Pod가 다시 생성되어도 동일한 Storage를 연결할 수 있습니다.
Kubernetes Storage Backend 종류
Kubernetes는 다양한 Storage 시스템과 연동할 수 있습니다.
| Storage | 특징 |
|---|---|
| AWS EBS | Cloud Block Storage |
| Google Persistent Disk | GCP Storage |
| Azure Disk | Azure Storage |
| NFS | 공유 File Storage |
| Ceph | 분산 Storage |
환경에 따라 적절한 Storage Backend를 선택합니다.
Kubernetes PV 장애 처리
Storage 문제가 발생하면 Application 운영에 영향을 줄 수 있습니다.
영향:
| 문제 | 결과 |
|---|---|
| PV 연결 실패 | Pod 실행 문제 |
| Disk 오류 | 데이터 접근 불가 |
| Storage 부족 | Application 오류 |
Storage Monitoring과 Backup 전략이 중요합니다.
Kubernetes PV 운영 시 고려사항
Production 환경에서는 Storage 관리가 필수입니다.
| 항목 | 설명 |
|---|---|
| Backup | 데이터 보호 |
| Performance | Disk 성능 관리 |
| Capacity | 용량 관리 |
| Security | 접근 제어 |
Storage 설계는 Application 안정성과 직접 연결됩니다.
Kubernetes Persistent Volume 장점
| 장점 | 설명 |
|---|---|
| 데이터 유지 | Pod 삭제 후에도 보존 |
| Storage 분리 | Application과 데이터 분리 |
| 자동화 | Dynamic Provisioning 지원 |
| 확장성 | 다양한 Backend 지원 |
PV는 Kubernetes Stateful Application 운영의 핵심 기술입니다.
자주 묻는 질문
PV와 PVC 차이는 무엇인가요?
PV는 Storage 자체를 의미하고 PVC는 Application이 Storage를 요청하는 Resource입니다.
Pod를 삭제하면 데이터도 삭제되나요?
PV와 PVC 설정 및 Reclaim Policy에 따라 다르며 Retain 설정을 사용하면 데이터를 유지할 수 있습니다.
모든 Application이 PV를 사용해야 하나요?
아닙니다.
Database, File Storage처럼 데이터를 유지해야 하는 Application에서 주로 사용합니다.
마무리
Kubernetes Persistent Volume(PV)은 Container 환경에서 데이터를 안전하게 유지하기 위한 핵심 Storage 구조입니다.
| 구성 요소 | 역할 |
|---|---|
| PV | 실제 Storage 제공 |
| PVC | Storage 요청 |
| Storage Class | 자동 Storage 생성 |
| Pod | Storage 사용 |
Persistent Volume 구조를 이해하면 Kubernetes에서 Database와 같은 Stateful Application이 데이터를 안전하게 저장하고 운영되는 방식을 이해할 수 있습니다.
다음 글에서는 Kubernetes Storage 자동화를 위한 Kubernetes Persistent Volume Claim(PVC) 완벽 가이드! Storage 요청과 연결 구조 이해하기를 알아보겠습니다.