[MacOS 환경 #22] 쿠버네티스 리밋 레인지(LimitRange)

도람·2025년 11월 26일
post-thumbnail

리밋 레인지(LimitRange)란?

한 마디로 리밋 레인지(LimitRange) 는
“네임스페이스 안의 각 파드나 컨테이너별 자원 사용 한도와 기본값을 지정하는 제도”이다.

이전 게시물 : 리소스 쿼터(ResourceQuota)에서
리소스 쿼터가 “네임스페이스 전체 팀 단위로 예산(총량)을 정하는 것”이었다면,
리밋 레인지는 그 예산 안에서 “개별 파드나 컨테이너가 얼마까지 쓸 수 있는지 제한하는 것”이다.


실습


1. 리밋 레인지 생성

파일명: limit-range.yaml

apiVersion: v1
kind: LimitRange
metadata:
  name: dev1-limit
  namespace: dev1
spec:
  limits:
  - type: Container
    default:
      cpu: "1"
      memory: 512Mi
    defaultRequest:
      cpu: "0.5"
      memory: 256Mi
    max:
      cpu: "2"
      memory: 1Gi
    min:
      cpu: "0.1"
      memory: 128Mi

코드 설명

필드설명
type: Container컨테이너 단위로 제한 설정
default컨테이너에 명시된 limit이 없을 때 자동으로 적용되는 기본값
defaultRequest컨테이너에 request가 없을 때 자동으로 설정되는 기본 요청값
max컨테이너가 사용할 수 있는 최대치
min컨테이너가 반드시 가져야 하는 최소 자원량

리밋 레인지의 특징 중 하나는 생성될 때 Pod YAML에서 resources를 안 써도
이 LimitRange가 자동으로 “기본 CPU, 메모리”를 채워준다는 것이다.


2. 생성 확인

kubectl get limitrange -n dev1

위 명령어로 리밋 레인지가 생성되었는지 확인할 수 있지만, 상세 확인으 하기 위해 describe 명령어를 사용한다.

kubectl describe limitrange dev1-limit -n dev1

이제 dev1 네임스페이스에 새로운 파드를 만들면
별도로 limit/request를 안 줘도 위 값들이 자동으로 채워진다.


3. 테스트 — 리밋 레인지 자동 적용 확인

파일명: pod-limit-test.yaml

apiVersion: v1
kind: Pod
metadata:
  name: limit-test
  namespace: dev1
spec:
  containers:
  - name: nginx
    image: nginx

별도로 resources:를 설정하지 않았지만,
파드 생성 후 describe pod 명령으로 확인해보면
LimitRange가 자동으로 적용된 것을 확인할 수 있다.


4. 쉽게 정리

항목설명비유
LimitRange파드/컨테이너별 자원 사용 기본값 및 한도팀원의 개인별 예산 한도
min최소 자원 사용량“최소한 이 정도는 써야 함”
max최대 자원 한도“이 이상은 안 됨”
defaultRequest명시 안 했을 때 자동 요청값“자동 기본 월급”
default명시 안 했을 때 자동 limit값“자동 상한선”

5. 리밋 레인지 요약

리밋 레인지(LimitRange)는
파드나 컨테이너가 사용할 수 있는 최소/최대 자원을 정의하고,
리소스 요청(request)과 제한(limit)을 지정하지 않은 경우
자동으로 기본값을 설정해주는 정책이다.

또한, ResourceQuota가 팀 단위 예산이라면,
LimitRange는 개인별 사용 한도다.


참고자료:
[쿠버네티스 공식 홈페이지 - Limit Ranges]
https://kubernetes.io/docs/concepts/policy/limit-range/

profile
정도를 걷는 엔지니어

0개의 댓글