devOps

[쿠버네티스] 컴퓨팅 리소스 관리 - LimitRange & ResourceQuota

집사킴 2024. 11. 28. 01:34
728x90

 

LimitRange

네임스페이스의 각 적용 가능한 오브젝트 종류(예: 파드 또는 퍼시스턴트볼륨클레임)에 대해 지정할 수 있는 리소스 할당(제한 및 요청)을 제한하는 정책이다.

 

apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-resource-constraint
spec:
  limits:
  - default: # 이 섹션에서는 기본 한도를 정의한다
      cpu: 500m
    defaultRequest: # 이 섹션에서는 기본 요청을 정의한다
      cpu: 500m
    max: # max와 min은 제한 범위를 정의한다
      cpu: "1"
    min:
      cpu: 100m

ResourceQuota

 

여러 사용자나 팀이 정해진 수의 노드로 클러스터를 공유할 때 한 팀이 공정하게 분배된 리소스보다 많은 리소스를 사용할 수 있다는 우려가 있다.

리소스 쿼터는 관리자가 이 문제를 해결하기 위한 도구이다.

ResourceQuota 오브젝트로 정의된 리소스 쿼터는 네임스페이스별 총 리소스 사용을 제한하는 제약 조건을 제공한다. 유형별로 네임스페이스에서 만들 수 있는 오브젝트 수와 해당 네임스페이스의 리소스가 사용할 수 있는 총 컴퓨트 리소스의 양을 제한할 수 있다.

ResourceQuota를 생성할 땐 LImitRange 오브젝트를 같이 생성해야 한다.

 

apiVersion: v1
kind: ResourceQuota
metadata:
  name: namespace-quota
  namespace: my-namespace
spec:
  hard:
    pods: "10"                  # 최대 10개의 Pod
    requests.cpu: "2"           # CPU 요청 합계 최대 2
    requests.memory: "2Gi"      # 메모리 요청 합계 최대 2Gi
    limits.cpu: "4"             # CPU 제한 합계 최대 4
    limits.memory: "4Gi"        # 메모리 제한 합계 최대 4Gi
    persistentvolumeclaims: "5" # PVC 최대 5개
    requests.storage: "10Gi"    # 스토리지 요청 합계 최대 10Gi

 

 

비교 요약

특징 LimitRange ResourceQuota
적용 범위 개별 Pod, 컨테이너, PVC 단위 Namespace 전체
목적 개별 자원의 요청/제한 최소/최대값 설정, 기본값 제공 Namespace 내 자원 총 사용량 제한
제어 대상 CPU, 메모리, PVC 크기 등 개별 자원 Pod 수, CPU, 메모리, PVC 수 등 Namespace 전체 자원 사용량
주요 사용 사례 특정 Pod/컨테이너가 과도한 자원을 사용하지 못하도록 제한 Namespace별 자원 사용량을 균형 있게 제한
동작 방식 Pod/컨테이너 생성 시 검증 자원 초과 시 Pod 생성 실패 또는 PVC 요청 거절

 


728x90