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