본문으로 건너뛰기

6.1. PersistentVolumeClaims (영구 볼륨 클레임)

개요​

PersistentVolumeClaims 페이지는 MCM 컨트롤 플레인에서 관리하는 모든 PVC를 통합적으로 관리하는 페이지입니다. PVC(PersistentVolumeClaim)는 사용자가 스토리지를 요청하는 Kubernetes 리소스로, PersistentVolume과 바인딩되어 파드에 영구 스토리지를 제공합니다.

주요 목적:

  • 멀티클러스터 PVC 통합 관리
  • 스토리지 요청 및 바인딩 상태 모니터링
  • 스토리지 클래스 및 접근 모드 관리
  • PropagationPolicy를 통한 PVC 배포

PVC 사용 사례:

  • 데이터베이스 영구 저장소 제공
  • 파일 업로드 스토리지
  • 로그 및 백업 저장소
  • 애플리케이션 상태 저장
  • 공유 파일 시스템

화면 구성​

PersistentVolumeClaims 페이지는 테이블 형태로 PVC 목록을 표시합니다.

PVCs 메인 화면

페이지 상단 요소​

요소설명
네임스페이스 필터특정 네임스페이스의 PVC만 표시
시스템 네임스페이스 포함시스템 네임스페이스(kube-system 등)의 PVC 표시 토글
새로고침 버튼PVC 목록 갱신
생성 버튼새 PVC 생성 다이얼로그 열기
검색창PVC 이름으로 검색

테이블 컬럼​

컬럼설명정렬
이름PVC 이름✅
네임스페이스PVC가 속한 네임스페이스✅
상태PVC 바인딩 상태 (Bound/Pending/Lost)✅
볼륨바인딩된 PersistentVolume 이름✅
용량할당된 스토리지 용량✅
접근 모드볼륨 접근 모드 (RWO/RWX/ROX)✅
스토리지 클래스사용된 스토리지 클래스 이름✅
경과시간PVC 생성 후 경과 시간✅
작업편집/삭제 버튼-

상태 표시​

상태 컬럼은 PVC의 바인딩 상태를 표시합니다:

상태설명표시
BoundPersistentVolume에 바인딩됨녹색
Pending적합한 PV를 기다리는 중노란색
Lost바인딩된 PV가 삭제됨빨간색

접근 모드​

접근 모드설명
RWOReadWriteOnce - 단일 노드에서 읽기/쓰기
RWXReadWriteMany - 여러 노드에서 읽기/쓰기
ROXReadOnlyMany - 여러 노드에서 읽기 전용

PVC 상세 정보​

PVC 행을 클릭하면 상세 정보 패널이 열립니다.

PVC 상세 정보

상세 패널 헤더​

요소설명
PVC 이름선택한 PVC 이름
네임스페이스PVC가 속한 네임스페이스
상태PVC 바인딩 상태 (예: Bound)

액션 버튼​

버튼기능
새로고침PVC 정보 갱신
편집YAML 편집 모드
삭제PVC 삭제

탭 메뉴​

개요 탭​

PVC의 기본 정보, 스토리지 정보, 스펙 정보를 표시합니다.

기본 정보:

항목설명
이름PVC 이름
네임스페이스PVC가 속한 네임스페이스
상태PVC 바인딩 상태
경과시간생성 후 경과 시간
생성일PVC 생성 일시

스토리지 정보:

항목설명
볼륨바인딩된 PersistentVolume 이름
용량실제 할당된 스토리지 용량
접근 모드볼륨 접근 모드 (RWO/RWX/ROX)
스토리지 클래스사용된 스토리지 클래스

스펙 정보:

항목설명
볼륨 모드Filesystem 또는 Block
요청 스토리지요청한 스토리지 용량

멀티클러스터 정책 탭​

PVC에 적용된 멀티 클러스터 정책 정보를 표시합니다.

멀티클러스터 정책 탭

전파 정책 (PropagationPolicy):

컬럼설명
이름PropagationPolicy 이름
네임스페이스정책이 속한 네임스페이스
범위네임스페이스 범위 정책 / 클러스터 범위 정책
대상 클러스터타겟 클러스터 목록

오버라이드 정책 (OverridePolicy):

클러스터별 커스텀 설정이 있는 경우 표시됩니다.

레이블 탭​

PVC에 적용된 Kubernetes 레이블 목록을 표시합니다.

어노테이션 탭​

PVC에 적용된 어노테이션 목록을 표시합니다.

이벤트 탭​

PVC 관련 Kubernetes 이벤트를 표시합니다.

PVC 생성​

새로운 PVC를 MCM 컨트롤 플레인에 생성합니다.

입력 항목​

항목필수설명
이름✅PVC 이름
네임스페이스✅배포할 네임스페이스
스토리지 클래스-사용할 스토리지 클래스
접근 모드✅볼륨 접근 모드 선택
용량✅요청할 스토리지 용량

PVC 정의 예시​

기본 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: standard

공유 스토리지 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-client

블록 볼륨 PVC:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: block-pvc
namespace: default
spec:
accessModes:
- ReadWriteOnce
volumeMode: Block
resources:
requests:
storage: 5Gi
storageClassName: block-storage

YAML 편집​

"YAML 편집" 탭에서 PVC 정의를 직접 작성할 수 있습니다.

PVC 작업​

PVC 편집​

  1. PVC 선택
  2. 상세 패널에서 "편집" 버튼 클릭
  3. YAML 에디터에서 PVC 정의 수정
  4. "저장" 버튼 클릭

주의: PVC의 일부 필드(접근 모드, 스토리지 클래스 등)는 생성 후 변경할 수 없습니다.

PVC 삭제​

⚠️ 주의: PVC를 삭제하면 데이터가 영구적으로 손실될 수 있습니다. PV의 Reclaim Policy에 따라 데이터가 유지되거나 삭제됩니다.

  1. 삭제할 PVC 선택
  2. 상세 패널에서 "삭제" 버튼 클릭
  3. 확인 다이얼로그에서 PVC 이름 입력
  4. "삭제" 버튼 클릭

사용 예시​

시나리오 1: 데이터베이스용 PVC 생성​

  1. "생성" 버튼 클릭
  2. PVC 정보 입력:
    • 이름: postgres-data
    • 네임스페이스: database
    • 스토리지 클래스: ssd-storage
    • 접근 모드: ReadWriteOnce
    • 용량: 20Gi
  3. "생성" 버튼 클릭
  4. PropagationPolicy로 타겟 클러스터 지정
  5. 데이터베이스 파드에서 PVC 마운트

시나리오 2: 공유 파일 스토리지 PVC 생성​

  1. "생성" 버튼 클릭 → YAML 편집 탭 선택
  2. 다음 YAML 작성:
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: shared-files
    namespace: app
    spec:
    accessModes:
    - ReadWriteMany
    resources:
    requests:
    storage: 50Gi
    storageClassName: nfs-client
  3. "생성" 버튼 클릭
  4. 여러 파드에서 동일한 PVC 마운트

시나리오 3: PVC 바인딩 상태 확인​

  1. PVC 목록에서 상태 컬럼 확인
  2. "Pending" 상태인 PVC 클릭
  3. 이벤트 탭에서 바인딩 실패 원인 확인:
    • 적합한 PV 없음
    • 스토리지 클래스 문제
    • 용량 부족
  4. 필요한 조치 수행

시나리오 4: 멀티클러스터 PVC 배포​

  1. PVC 생성
  2. PropagationPolicy 생성:
    • 리소스 셀렉터: PVC 지정
    • 타겟 클러스터: 배포할 클러스터 선택
  3. 상세 패널에서 "멀티클러스터 정책" 탭 확인
  4. 각 클러스터에서 PVC 상태 확인

시나리오 5: 스토리지 용량 모니터링​

  1. PVC 목록에서 용량 컬럼 확인
  2. 상세 패널에서 스토리지 정보 확인:
    • 요청 용량
    • 실제 할당 용량
    • 접근 모드
  3. 필요시 새 PVC 생성하여 확장

관련 개념​

PVC vs PV​

특성PVC (PersistentVolumeClaim)PV (PersistentVolume)
역할스토리지 요청스토리지 리소스
생성 주체개발자/사용자관리자/동적 프로비저너
범위네임스페이스 범위클러스터 범위
생명주기파드와 독립적PVC와 바인딩되어 관리
용도애플리케이션 스토리지 요청실제 스토리지 제공

스토리지 클래스​

스토리지 클래스는 동적 프로비저닝을 위한 스토리지 유형을 정의합니다:

유형설명사용 사례
standard기본 스토리지일반 용도
ssdSSD 기반 스토리지고성능 데이터베이스
nfs네트워크 파일 시스템공유 파일 스토리지
block블록 스토리지고성능 I/O
archive아카이브 스토리지백업, 로그 저장

볼륨 모드​

모드설명사용 사례
Filesystem파일 시스템으로 마운트 (기본값)일반 파일 저장
Block블록 디바이스로 마운트데이터베이스, 고성능 워크로드

PV Reclaim Policy​

PVC 삭제 시 PV의 동작을 정의합니다:

정책설명
RetainPV와 데이터 유지 (수동 정리 필요)
DeletePV와 스토리지 자동 삭제
Recycle데이터 삭제 후 PV 재사용 (deprecated)

동적 프로비저닝​

스토리지 클래스를 사용하면 PVC 생성 시 자동으로 PV가 프로비저닝됩니다:

  1. 사용자가 PVC 생성 (스토리지 클래스 지정)
  2. 스토리지 클래스의 프로비저너가 PV 생성
  3. PVC와 PV 자동 바인딩
  4. 파드에서 PVC 사용 가능

멀티클러스터 스토리지 관리​

MCM을 통해 PVC를 멀티클러스터에 배포할 때:

PropagationPolicy:

  • 동일한 PVC 정의를 여러 클러스터에 복제
  • 각 클러스터에서 독립적으로 PV 바인딩
  • 클러스터별 스토리지 클래스 지원

OverridePolicy:

  • 클러스터별로 다른 스토리지 클래스 적용
  • 클러스터별 용량 조정
  • 예: 클러스터 A는 SSD, 클러스터 B는 HDD

주의사항:

  • 각 클러스터의 스토리지 클래스 가용성 확인
  • PV는 클러스터 로컬 리소스이므로 클러스터 간 공유 불가
  • 데이터 복제는 애플리케이션 레벨에서 처리 필요

문제 해결​

PVC가 Pending 상태인 경우:

  • 스토리지 클래스가 존재하는지 확인
  • 프로비저너가 정상 동작하는지 확인
  • 요청한 접근 모드가 지원되는지 확인
  • 충분한 스토리지 용량이 있는지 확인

PVC가 Lost 상태인 경우:

  • 바인딩된 PV가 삭제되었는지 확인
  • 스토리지 백엔드 상태 확인
  • 데이터 복구 필요 여부 평가
  • 새 PVC 생성 고려

파드가 PVC 마운트에 실패한 경우:

  • PVC 상태가 Bound인지 확인
  • 접근 모드가 파드 요구사항과 일치하는지 확인
  • 노드에서 스토리지 접근 가능한지 확인
  • 볼륨 모드가 올바른지 확인

다음 단계​