Kubernetes Persistent Volume Claim(PVC) 완벽 가이드! Storage 요청과 연결 구조 이해하기

Kubernetes 환경에서 Application이 Storage를 사용하려면 직접 Disk를 지정하는 방식이 아니라 PVC(Persistent Volume Claim)를 통해 Storage를 요청합니다.

개발자는 실제 Storage 위치나 종류를 몰라도 필요한 용량과 조건만 정의하면 Kubernetes가 적절한 Storage를 연결해 줍니다.

PVC는 Application과 Persistent Volume(PV) 사이를 연결하는 추상화 계층입니다.

이를 통해 Kubernetes는 Cloud Storage, Network Storage, Local Storage 등 다양한 환경에서 동일한 방식으로 데이터를 관리할 수 있습니다.

구성 요소역할
PVCStorage 요청
PV실제 Storage 제공
Storage ClassStorage 자동 생성
PodPVC 사용

PVC 구조를 이해하면 Kubernetes Application이 Storage를 요청하고 연결하는 전체 과정을 이해할 수 있습니다.

Kubernetes PVC란 무엇인가?

PVC(Persistent Volume Claim)는 Kubernetes에서 Storage를 요청하기 위한 Resource입니다.

Pod는 직접 PV를 선택하지 않고 PVC를 통해 필요한 Storage 조건을 요청합니다.

예:

개발자 요청:

Storage 용량:

100GB

Access Mode:

ReadWriteOnce

Kubernetes

조건에 맞는 PV 연결

이 구조를 통해 Application과 Storage를 분리하여 관리할 수 있습니다.

Kubernetes PVC가 필요한 이유

Container 환경에서는 Application과 Storage를 분리하는 것이 중요합니다.

Pod는 생성과 삭제가 반복되기 때문에 Container 내부에 데이터를 저장하면 데이터 손실 위험이 있습니다.

문제:

상황문제
Pod 삭제데이터 손실 가능
Node 변경Storage 연결 문제
환경 변경Storage 재구성 필요
수동 Disk 관리운영 복잡성 증가

PVC를 사용하면 Application Lifecycle과 데이터 Lifecycle을 분리할 수 있습니다.

Kubernetes PVC 동작 구조

PVC는 PV와 연결되어 Storage를 제공합니다.

구조:

구성 요소역할
PodApplication 실행
PVCStorage 요청
PVStorage 제공
Storage Backend실제 Disk

동작 과정:

단계내용
1단계PVC 생성
2단계Storage 조건 확인
3단계PV 검색 또는 생성
4단계PVC와 PV 연결
5단계Pod Volume Mount

이 과정을 Binding이라고 합니다.

Kubernetes PVC와 PV Binding이란?

Binding은 PVC와 PV를 연결하는 과정입니다.

Kubernetes는 PVC 조건을 확인하고 적합한 PV를 찾아 연결합니다.

확인 조건:

조건설명
Storage ClassStorage 종류
Capacity필요 용량
Access Mode접근 방식
Selector선택 조건

조건이 맞는 PV가 있으면 자동으로 연결됩니다.

Kubernetes PVC Lifecycle

PVC도 생성부터 삭제까지 Lifecycle을 가집니다.

상태설명
PendingPV 연결 대기
BoundPV 연결 완료
Lost연결된 PV 손실

정상적인 상태에서는 대부분 Bound 상태로 유지됩니다.

Kubernetes PVC와 Storage Class 관계

Storage Class는 PVC 요청을 기반으로 Storage를 자동 생성하는 기능입니다.

PVC가 특정 Storage Class를 요청하면 Kubernetes가 해당 Storage Backend를 통해 PV를 생성합니다.

구조:

PVC 생성

Storage Class 확인

Provisioner 실행

PV 생성

PVC 연결

이를 Dynamic Provisioning이라고 합니다.

Kubernetes PVC Access Mode 설정

PVC는 Storage 접근 방식을 지정합니다.

주요 방식:

Access Mode설명
ReadWriteOnce(RWO)하나의 Node에서 읽기/쓰기
ReadOnlyMany(ROX)여러 Node 읽기 전용
ReadWriteMany(RWX)여러 Node 읽기/쓰기

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

Kubernetes PVC Storage 용량 설정

PVC는 필요한 Storage 크기를 요청합니다.

예:

requests:

storage: 100Gi

의미:

100GB 이상의 Storage 요청

Kubernetes는 요청 조건에 맞는 PV를 연결합니다.

운영 환경에서는 실제 사용량을 고려하여 용량을 설정해야 합니다.

Kubernetes PVC와 Pod 연결 구조

Pod는 PVC를 Volume으로 연결하여 사용합니다.

구조:

Pod

Volume

PVC

PV

Storage

Container는 PVC를 통해 Storage를 사용할 수 있습니다.

Kubernetes PVC와 StatefulSet 관계

StatefulSet은 PVC를 활용하여 각 Pod마다 독립적인 Storage를 제공합니다.

구조:

StatefulSet

Database-0

PVC-0

PV-0

Database-1

PVC-1

PV-1

각 Instance의 데이터를 안정적으로 유지할 수 있습니다.

Kubernetes PVC 삭제와 데이터 관리

PVC 삭제 시 데이터 처리 방식은 Storage 정책에 따라 달라집니다.

예:

정책결과
Retain데이터 유지
DeleteStorage 삭제
Recycle재사용 처리

중요한 데이터는 Retain 정책을 고려해야 합니다.

Kubernetes PVC와 Dynamic Provisioning

Dynamic Provisioning을 사용하면 관리자가 직접 PV를 생성하지 않아도 됩니다.

기존 방식:

관리자

PV 생성

PVC 연결

자동 방식:

사용자

PVC 생성

Storage 자동 생성

Cloud Kubernetes 환경에서 많이 사용하는 방식입니다.

Kubernetes PVC 운영 시 고려사항

Production 환경에서는 PVC 관리 정책이 필요합니다.

항목설명
Backup데이터 보호
Capacity 관리Storage 부족 방지
Access ModeApplication 요구사항 확인
Monitoring사용량 확인

Storage 문제는 Application 장애로 이어질 수 있기 때문에 지속적인 관리가 필요합니다.

Kubernetes PVC 장애 상황

PVC 문제가 발생하면 Pod 실행에 영향을 줄 수 있습니다.

주요 문제:

문제결과
PVC PendingPod 실행 지연
PV 연결 실패Storage 사용 불가
Disk 부족Application 오류
Permission 문제데이터 접근 실패

Storage 상태 확인은 Kubernetes 운영에서 중요합니다.

Kubernetes PVC 장점

장점설명
Storage 추상화환경과 관계없이 사용
데이터 유지Pod와 데이터 분리
자동화Dynamic Provisioning 지원
관리 편의성Storage 중앙 관리

PVC는 Kubernetes Storage Architecture의 핵심 연결 요소입니다.

자주 묻는 질문

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

PV는 실제 Storage Resource이고 PVC는 Application이 Storage를 요청하는 인터페이스입니다.

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

Storage Reclaim Policy 설정에 따라 다릅니다.

Retain 정책이면 데이터가 유지될 수 있습니다.

하나의 PVC를 여러 Pod가 사용할 수 있나요?

가능하지만 Storage Access Mode에 따라 제한됩니다.

RWX를 지원하는 Storage에서는 여러 Pod가 동시에 사용할 수 있습니다.

마무리

Kubernetes Persistent Volume Claim(PVC)은 Application이 필요한 Storage를 요청하고 Persistent Volume과 연결하는 핵심 Resource입니다.

구성 요소역할
PVCStorage 요청
PVStorage 제공
Storage Class자동 Storage 생성
PodStorage 사용

PVC 구조를 이해하면 Kubernetes 환경에서 Application과 데이터를 분리하고 안정적인 Storage 운영 구조를 구축할 수 있습니다.

다음 글에서는 Kubernetes Storage 자동 생성과 Provisioning 방식을 관리하는 Kubernetes Storage Class 완벽 가이드! Dynamic Provisioning과 Storage 자동화 구조 이해하기를 알아보겠습니다.

댓글 남기기