Kubernetes Persistent Volume 완벽 가이드! PV와 PVC를 활용한 Container Storage 관리 방법 이해하기

Container 환경에서 가장 중요한 문제 중 하나는 데이터 저장입니다.

일반적인 Container는 기본적으로 삭제되면 내부 데이터도 함께 사라지는 구조입니다.

예를 들어 Database Container를 실행한다고 가정해 보겠습니다.

Container 내부에 데이터를 저장하면:

Container 실행

Database 데이터 생성

Container 삭제

데이터 손실

이런 문제가 발생할 수 있습니다.

Kubernetes에서는 Container와 Storage를 분리하기 위해 Persistent Volume(PV)과 Persistent Volume Claim(PVC) 구조를 제공합니다.

Application은 직접 Disk를 관리하지 않고 PVC를 통해 Storage를 요청하고, Kubernetes가 적절한 Storage를 연결합니다.

구성 요소역할
Persistent Volume(PV)실제 Storage 공간
Persistent Volume Claim(PVC)Storage 요청
StorageClassStorage 생성 정책
PodStorage 사용

PV와 PVC 구조를 이해하면 Database, File Server, Stateful Application을 안정적으로 운영할 수 있습니다.

Kubernetes Storage가 필요한 이유

Container는 기본적으로 Ephemeral(임시) 환경입니다.

구조:

Container 생성

Application 실행

데이터 저장

Container 삭제

데이터 삭제

하지만 실제 서버 운영에서는 데이터가 유지되어야 합니다.

예:

Database

  • 사용자 정보
  • 주문 데이터
  • 설정 데이터

File Server

  • 업로드 파일
  • 이미지 데이터

이러한 데이터는 Container 생명주기와 분리되어야 합니다.

Kubernetes Persistent Volume(PV)이란?

Persistent Volume은 Kubernetes Cluster에서 사용할 수 있는 실제 Storage 공간입니다.

관리자가 미리 생성하거나 StorageClass를 통해 자동 생성됩니다.

구조:

Storage

Persistent Volume

Persistent Volume Claim

Pod

PV는 실제 Disk 또는 Cloud Storage와 연결됩니다.

Kubernetes Persistent Volume Claim(PVC)이란?

PVC는 Application이 Storage를 요청하는 객체입니다.

Pod는 직접 PV를 선택하지 않습니다.

대신 PVC를 요청하고 Kubernetes가 조건에 맞는 PV를 연결합니다.

구조:

Developer

PVC 생성

Kubernetes 확인

적절한 PV 연결

Pod 사용

Storage 관리와 Application 배포를 분리할 수 있습니다.

PV와 PVC를 분리하는 이유

운영 환경에서는 개발자와 Infrastructure 관리자의 역할이 다릅니다.

기존 방식:

개발자

직접 Disk 설정

Application 연결

문제:

  • 환경 변경 어려움
  • Cloud 이전 어려움
  • Storage 관리 복잡

Kubernetes 방식:

Infrastructure 관리자

PV 관리

개발자

PVC 요청

역할을 분리할 수 있습니다.

Kubernetes PV 동작 구조

PV 연결 과정:

1단계

Storage 생성

2단계

PV 등록

3단계

PVC 요청

4단계

Binding

5단계

Pod 연결

Kubernetes가 Storage 연결 과정을 관리합니다.

Kubernetes PV 상태 확인

PV는 여러 상태를 가집니다.

상태의미
Available사용 가능
BoundPVC 연결 완료
ReleasedPVC 삭제 후 유지
Failed오류 상태

확인 명령어:

kubectl get pv

Storage 상태 확인에 사용됩니다.

Kubernetes PVC 상태 확인

PVC 상태:

상태의미
PendingPV 연결 대기
Bound정상 연결
Lost연결 손실

확인:

kubectl get pvc

Storage 장애 분석 시 중요한 명령어입니다.

Kubernetes StorageClass란?

StorageClass는 Storage를 자동으로 생성하는 정책입니다.

기존 방식:

관리자가 PV 직접 생성

PVC 연결

StorageClass 방식:

PVC 요청

StorageClass 확인

자동 PV 생성

Cloud 환경에서 많이 사용됩니다.

Kubernetes Dynamic Provisioning 구조

Dynamic Provisioning은 Storage 자동 생성 방식입니다.

구조:

PVC 생성

StorageClass 확인

Cloud Storage 생성

PV 자동 생성

Pod 연결

운영 효율을 높일 수 있습니다.

Kubernetes Static Provisioning과 Dynamic Provisioning 비교

구분StaticDynamic
PV 생성수동자동
관리 방식직접 관리StorageClass 기반
운영 규모작은 환경대규모 환경
Cloud 환경제한적적합

Production 환경에서는 Dynamic Provisioning 사용이 많습니다.

Kubernetes Access Mode 이해하기

PV는 Storage 접근 방식을 정의합니다.

Mode의미
ReadWriteOnce하나의 Node에서 읽기/쓰기
ReadOnlyMany여러 Node 읽기
ReadWriteMany여러 Node 읽기/쓰기

Application 특성에 맞는 선택이 필요합니다.

Kubernetes Reclaim Policy란?

PVC가 삭제되었을 때 PV 처리 방식을 결정합니다.

정책설명
Retain데이터 유지
DeleteStorage 삭제
Recycle재사용

Database 운영에서는 Retain 설정을 고려해야 합니다.

Kubernetes Database 운영과 PV

Database는 Kubernetes Storage 활용 사례가 많습니다.

예:

MySQL Pod

PVC

Persistent Volume

Cloud Disk

Container가 재시작되어도 데이터가 유지됩니다.

Kubernetes PV 장애 상황

Storage 문제는 Application 장애로 이어집니다.

주요 문제:

문제원인
PVC PendingPV 부족
Mount 실패권한 또는 연결 문제
Storage 부족Disk Capacity 문제
Volume 오류Cloud Storage 문제

Storage 장애 분석이 필요합니다.

Kubernetes Storage 장애 확인 방법

확인 순서:

1단계

PVC 확인

kubectl get pvc

2단계

PV 확인

kubectl get pv

3단계

Pod Event 확인

kubectl describe pod pod-name

4단계

StorageClass 확인

kubectl get storageclass

순서대로 원인을 찾습니다.

Kubernetes Storage 운영 전략

Production 환경에서는 다음을 고려해야 합니다.

항목설명
Backup데이터 보호
Replication고가용성
StorageClass자동화
Monitoring용량 관리

Storage는 Application 안정성의 핵심입니다.

Kubernetes PV 장점

장점설명
데이터 유지Container 삭제 보호
관리 분리개발과 인프라 분리
Cloud 연동다양한 Storage 지원
확장성대규모 운영 가능

Persistent Volume은 Kubernetes Stateful Application 운영의 기본 구조입니다.

자주 묻는 질문

Pod를 삭제하면 데이터도 삭제되나요?

PVC와 PV를 사용하면 Container 삭제와 관계없이 데이터를 유지할 수 있습니다.

PV와 PVC 차이는 무엇인가요?

PV는 실제 Storage 공간이고 PVC는 Storage를 요청하는 객체입니다.

Database를 Kubernetes에서 운영할 수 있나요?

가능합니다.

다만 Backup, Replication, Storage 안정성을 함께 고려해야 합니다.

마무리

Kubernetes Persistent Volume은 Container 환경에서 데이터 지속성을 제공하는 핵심 Storage 구조입니다.

구성 요소역할
PV실제 Storage
PVCStorage 요청
StorageClass자동 생성 정책
PodStorage 사용

PV와 PVC 구조를 이해하면 Database와 같은 Stateful Application을 Kubernetes 환경에서 안정적으로 운영할 수 있습니다.

다음 글에서는 Kubernetes Storage 자동화를 위한 Kubernetes StorageClass 완벽 가이드! Dynamic Provisioning과 Cloud Storage 연결 구조 이해하기를 알아보겠습니다.

댓글 남기기