
RBAC 설정을 통해
‘누가(admin/tenant)’들어올 수 있는지를 정의했습니다. 이제 각 테넌트가 사용할 수 있는물리적 자원의 크기를 결정할 차례입니다.
그 중에서 라즈베리파이의 SD 카드나 외장 SSD 를 보호하기 위한 Storage Quota & Isolation 을 먼저 진행해보겠습니다.
총량 제한 : 해당 네임스페이스(tenant-alpha) 내에서 생성되는 모든 PVC(PersistentVolumeClaim) 용량의 합계를 제한개수 제한 : 테넌트가 생성할 수 있는 스토리지 요청(PVC) 객체의 개수 자체를 제한하여 관리 오버헤드를 방지ResourceQuotarequests.storage) 을 제한하는 용도로 사용PersistentVolumeClaim (PVC)📌 PV 와 PVC
- 쿠버네티스에서 스토리지는 크게 두 단계로 관리됩니다.
PV (PersistentVolume)
- 실제 물리적 스토리지(SSD)의 일부분을 쿠버네티스가 인식할 수 있는 자원 형태로 등록해둔 것 →
관리자 영역PVC (PersistentVolumeClaim)
- 사용자가 특정 용량과 접근 권한을 명시하여 스토리지를 할당받으려고 제출하는 요청 →
테넌트 영역테넌트가 PVC를 생성하면, 쿠버네티스는 테넌트의 요구사항(용량, 읽기/쓰기 모드)에 맞는 PV를 찾아서 서로 연결(
Binding) 해줍니다.
StorageClasstenant-alpha 네임스페이스에 총 5Gi 의 스토리지 사용량을 제한하는 설정을 적용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개로 제한
# 마스터 노드에서 실행
kubectl apply -f tenant-storage-quota.yaml
정상 요청 (2Gi)tenant-alpha 내에서 2Gi 크기의 PVC를 생성하면 정상적으로 승인초과 요청 (4Gi 추가)# 쿼터 상태 확인
kubectl describe resourcequota storage-quota -n tenant-alpha
USED 열은 현재 테넌트가 사용하는 양을, HARD 열은 설정한 상한선을 보여줌이제 단순히 용량만 제한하는 것이 아니라, 네임스페이스별로 PVC를 분리함으로써 테넌트 A가 테넌트 B의 데이터를 물리적/논리적으로 들여다볼 수 없는 구조가 완성되었습니다. 다음 포스트에서는 CPU/RAM 에 대한 격리를 설정해보겠습니다.