[Project] Multi-Tenant K8s Cluster on ARM64 - (3) Storage Quota & Isolation

developowl·2026년 3월 6일
post-thumbnail

RBAC 설정을 통해 ‘누가(admin/tenant)’ 들어올 수 있는지를 정의했습니다. 이제 각 테넌트가 사용할 수 있는 물리적 자원의 크기를 결정할 차례입니다.
그 중에서 라즈베리파이의 SD 카드나 외장 SSD 를 보호하기 위한 Storage Quota & Isolation 을 먼저 진행해보겠습니다.


1. [기능 설명] 스토리지 격리 및 용량 제한

  • 특정 테넌트가 무분별하게 대용량 데이터를 저장하여 클러스터 전체의 디스크 공간(Storage)을 고갈시키는 것을 방지하는 작업

1-1. 주요 설계 목표

  • 총량 제한 : 해당 네임스페이스(tenant-alpha) 내에서 생성되는 모든 PVC(PersistentVolumeClaim) 용량의 합계를 제한
  • 개수 제한 : 테넌트가 생성할 수 있는 스토리지 요청(PVC) 객체의 개수 자체를 제한하여 관리 오버헤드를 방지

1-2. 필요한 쿠버네티스 기술 객체

ResourceQuota

  • CPU/RAM 뿐만 아니라 스토리지의 총합(requests.storage) 을 제한하는 용도로 사용

PersistentVolumeClaim (PVC)

  • 사용자가 스토리지를 사용하겠다고 요청하는 예약권

📌 PV 와 PVC

  • 쿠버네티스에서 스토리지는 크게 두 단계로 관리됩니다.

PV (PersistentVolume)

  • 실제 물리적 스토리지(SSD)의 일부분을 쿠버네티스가 인식할 수 있는 자원 형태로 등록해둔 것 → 관리자 영역

PVC (PersistentVolumeClaim)

  • 사용자가 특정 용량과 접근 권한을 명시하여 스토리지를 할당받으려고 제출하는 요청 → 테넌트 영역

테넌트가 PVC를 생성하면, 쿠버네티스는 테넌트의 요구사항(용량, 읽기/쓰기 모드)에 맞는 PV를 찾아서 서로 연결(Binding) 해줍니다.

StorageClass

  • 어떤 종류의 저장 장치(SSD, HDD 등)를 사용할지 정의하며, 쿼터 계산의 기준이 됨

2. [기능 개발] YAML 매니페스트 및 테스트

  • tenant-alpha 네임스페이스에 총 5Gi 의 스토리지 사용량을 제한하는 설정을 적용

2-1. 스토리지 쿼터 정의 (tenant-storage-quota.yaml)

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-quota
  namespace: tenant-alpha # 테넌트 알파 공간에 적용
spec:
  hard:
    requests.storage: "5Gi"    # 모든 PVC 용량의 합계를 5Gi로 제한
    persistentvolumeclaims: "3" # 생성 가능한 PVC 개수를 3개로 제한

2-2. 환경 적용

# 마스터 노드에서 실행
kubectl apply -f tenant-storage-quota.yaml

2-3. 검증 테스트 (Quota 초과 상황 재현)

  • 테넌트가 할당량을 넘어서는 요청을 할 때 시스템이 어떻게 차단하는지 확인
  • 정상 요청 (2Gi)
    • tenant-alpha 내에서 2Gi 크기의 PVC를 생성하면 정상적으로 승인
  • 초과 요청 (4Gi 추가)
    • 이미 2Gi 를 사용 중인 상태에서 4Gi를 추가 요청하면, 총합이 6Gi가 되어 설정된 5Gi를 초과하므로 API 서버에서 생성을 거부
# 쿼터 상태 확인
kubectl describe resourcequota storage-quota -n tenant-alpha
  • USED 열은 현재 테넌트가 사용하는 양을, HARD 열은 설정한 상한선을 보여줌

마무리

이제 단순히 용량만 제한하는 것이 아니라, 네임스페이스별로 PVC를 분리함으로써 테넌트 A가 테넌트 B의 데이터를 물리적/논리적으로 들여다볼 수 없는 구조가 완성되었습니다. 다음 포스트에서는 CPU/RAM 에 대한 격리를 설정해보겠습니다.

profile
Don’t get mad at the computer.

0개의 댓글