본문으로 건너뛰기

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인지 확인
  • 접근 모드가 파드 요구사항과 일치하는지 확인
  • 노드에서 스토리지 접근 가능한지 확인
  • 볼륨 모드가 올바른지 확인

다음 단계