
한 마디로 리소스 쿼터란 네임스페이스별 사용량 제한 제도이다.
전 게시물에서
쿠버네티스 클러스터가 회사 본사,
각 네임스페이스가 팀(부서) 라고 비유를 들었는데,
여기에서 리소스 쿼터는 이런 느낌이다.
“dev1 CPU 너무 많이 쓰지 말고,
메모리도 4GB까지만 써.”
“dev2팀은 파드 10개까지만 만들어.”
라고 제한을 주는것이다.
즉, 팀별로 리소스 사용량 한도를 걸어두는 정책이며.
그래야 한 팀이 클러스터 전체 자원을 독식하지 않게 된다.
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev1-quota
namespace: dev1
spec:
hard:
pods: "5"
requests.cpu: "2"
requests.memory: 2Gi
limits.cpu: "4"
limits.memory: 4Gi
| 항목 | 의미 | 비유 |
|---|---|---|
| ResourceQuota | 네임스페이스별 자원 한도 | “팀별 예산” |
| requests | 기본으로 보장받는 자원량 | “월급 최소 보장” |
| limits | 초과 불가한 최대치 | “월급 상한선” |
| pods, services 등 | 개수 제한 | “팀에서 쓸 수 있는 컴퓨터 개수 제한” |
리소스 쿼터(ResourceQuota)는
네임스페이스별로 사용할 수 있는 CPU, 메모리, 파드 수 등을 제한해서
클러스터 전체 자원을 공평하게 배분하는 시스템이다.
네임 스페이스 dev1에게 리소스쿼터를 적용하는 코드이다(네임스페이스가 없으면 미리 create 해줘야 한다.)
파일명: rq-dev1.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev1-quota
namespace: dev1
spec:
hard:
pods: "5" # dev1 네임스페이스에 생성 가능한 파드 개수 제한
requests.cpu: "2" # 요청 가능한 CPU 총합
requests.memory: 2Gi # 요청 가능한 메모리 총합
limits.cpu: "4" # 사용할 수 있는 최대 CPU 총합
limits.memory: 4Gi # 사용할 수 있는 최대 메모리 총합
vim을 통해 파일을 생성하고 적용한 뒤,
kubectl get resourcequota -n dev1
명령어를 통해 dev1에 할당된 리소스쿼터를 확인할 수 있다.

리소스 쿼터를 상세적으로 확인하려면 다음 명령어를 사용하면 된다.
kubectl describe resourcequota dev1-quota -n dev1

이제 dev1 네임스페이스에서는
파일명: pod-test.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
namespace: dev1
spec:
containers:
- name: nginx
image: nginx
resources:
requests:
cpu: "0.5"
memory: "256Mi"
limits:
cpu: "1"
memory: "512Mi"
디플로이먼트 말고 로그를 보기 위해 파드를 for 반복문을 사용해서 6개를 반복적으로 만들어보도록
테스트해볼 것이다.
for i in {1..6}; do
kubectl apply -f pod-test.yaml --namespace=dev1 --record --validate=false --dry-run=client -o yaml | sed "s/test-pod/test-pod-$i/" | kubectl apply -f -
done

이렇게 정확히 6번째 파드 생성부터 오류가 나는 것을 확인할 수 있다.
즉, 설정한 리소스 쿼터 제한을 초과했기 때문에 생성이 거부된 것이다.
| 항목 | 설명 |
|---|---|
| ResourceQuota | 네임스페이스별 자원 제한을 정의하는 객체 |
| pods | 생성 가능한 파드 개수 제한 |
| requests.cpu / memory | 요청 가능한 자원 총합 |
| limits.cpu / memory | 사용 가능한 자원 최대치 |
| kubectl describe quota | 현재 사용량과 제한치 확인 가능 |
참고자료:
[쿠버네티스 공식 홈페이지 - Resource Quotas]
https://kubernetes.io/docs/concepts/policy/resource-quotas/