스토리지 사용량 제한하기

스토리지 사용량 제한하기 (Limit Storage Consumption)

이 예시는 네임스페이스에서 소비되는 스토리지 양을 제한하는 방법을 보여드려요. 데모에는 다음 리소스가 사용돼요: ResourceQuota, LimitRange, PersistentVolumeClaim.

출처: 문서

본문

시작하기 전에 (Before you begin)

쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 구성돼 있어야 해요. 이 튜토리얼은 컨트롤 플레인 호스트가 아닌 노드가 두 개 이상 있는 클러스터에서 실행하는 것을 권장해요. 아직 클러스터가 없다면 minikube로 만들거나 다음 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있어요.

  • iximiuz Labs
  • Killercoda
  • KodeKloud

버전을 확인하려면 kubectl version을 입력하세요.

시나리오: 스토리지 사용량 제한하기 (Scenario: Limiting Storage Consumption)

cluster-admin이 사용자 집단을 대신해 클러스터를 운영하는데, 비용을 통제하기 위해 단일 네임스페이스가 소비할 수 있는 스토리지 양을 제어하려고 해요. 관리자는 다음을 제한하고 싶어요.

  • 네임스페이스의 영구 볼륨 클레임 수
  • 각 클레임이 요청할 수 있는 스토리지 양
  • 네임스페이스가 가질 수 있는 누적 스토리지 양

스토리지 요청을 제한하는 LimitRange (LimitRange to limit requests for storage)

네임스페이스에 LimitRange를 추가하면 스토리지 요청 크기를 최소와 최대로 강제해요. 스토리지는 PersistentVolumeClaim을 통해 요청돼요. limit range를 강제하는 승인 컨트롤러는 관리자가 설정한 값보다 위아래인 어떤 PVC도 거부해요.

이 예시에서 10Gi의 스토리지를 요청하는 PVC는 2Gi 최대값을 초과하므로 거부될 거예요.

apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
spec:
  limits:
  - type: PersistentVolumeClaim
    max:
      storage: 2Gi
    min:
      storage: 1Gi

최소 스토리지 요청은 기본 스토리지 제공자가 특정 최소값을 요구할 때 사용돼요. 예를 들어 AWS EBS 볼륨은 1Gi 최소 요구 사항이 있어요.

PVC 개수와 누적 스토리지 용량을 제한하는 ResourceQuota (ResourceQuota to limit PVC count and cumulative storage capacity)

관리자는 네임스페이스의 PVC 개수와 그 PVC들의 누적 용량을 제한할 수 있어요. 두 최대값 중 하나를 초과하는 새 PVC는 거부될 거예요.

이 예시에서 네임스페이스의 6번째 PVC는 최대 개수 5를 초과하므로 거부될 거예요. 또는 위의 2Gi 최대 제한과 결합된 5Gi 최대 쿼터는, 각각 2Gi인 PVC 3개를 가질 수 없어요. 그건 5Gi로 제한된 네임스페이스에 6Gi를 요청하는 셈이기 때문이에요.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storagequota
spec:
  hard:
    persistentvolumeclaims: "5"
    requests.storage: "5Gi"

요약 (Summary)

limit range는 요청되는 스토리지 양에 상한선을 둘 수 있고, resource quota는 클레임 개수와 누적 스토리지 용량을 통해 네임스페이스가 소비하는 스토리지를 효과적으로 상한으로 제한할 수 있어요. 이는 cluster-admin이 어느 한 프로젝트도 할당량을 초과할 위험 없이 클러스터의 스토리지 예산을 계획할 수 있게 해 줘요.

더 알아보기 (Learn more)