Kubernetes Cluster에서는 여러 팀과 Application이 하나의 Infrastructure를 공유합니다.
하지만 제한 없이 Resource를 사용하면 특정 Application이 CPU와 Memory를 모두 점유하여 다른 서비스에 영향을 줄 수 있습니다.
예:
Team A Application
↓
CPU 100% 사용
↓
다른 Application 실행 불가
이 문제를 해결하기 위해 Kubernetes는 ResourceQuota 기능을 제공합니다.
ResourceQuota는 Namespace 단위로 CPU, Memory, Pod 개수 등의 사용량을 제한하는 Kubernetes Resource 관리 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| ResourceQuota | Namespace Resource 제한 |
| LimitRange | Container 기본 제한 |
| Namespace | Resource 관리 영역 |
| Scheduler | 배치 판단 |
| kubelet | 실제 Resource 관리 |
ResourceQuota 구조를 이해하면 Multi Tenant 환경과 Enterprise Kubernetes 운영 방식을 이해할 수 있습니다.
Kubernetes ResourceQuota란?
ResourceQuota는 Namespace에서 사용할 수 있는 Resource 최대량을 설정하는 기능입니다.
관리 대상:
- CPU
- Memory
- Pod 개수
- PVC 개수
- Storage 용량
- Service 개수
구조:
Namespace
↓
ResourceQuota 적용
↓
Application Resource 제한
Cluster Resource를 효율적으로 관리할 수 있습니다.
Kubernetes ResourceQuota가 필요한 이유
공유 Cluster 환경에서는 Resource 경쟁이 발생합니다.
예:
Application A
CPU:
8 Core 사용
Application B
실행 필요
하지만 Resource 부족
↓
서비스 영향 발생
ResourceQuota를 적용하면 팀별 또는 서비스별 Resource 사용량을 제한할 수 있습니다.
Kubernetes ResourceQuota 동작 구조
흐름:
사용자 Pod 생성 요청
↓
API Server
↓
ResourceQuota 확인
↓
사용 가능 여부 판단
↓
허용 또는 차단
Quota를 초과하면 Resource 생성이 거부됩니다.
Kubernetes ResourceQuota 종류
주요 제한 항목:
| 항목 | 설명 |
|---|---|
| requests.cpu | CPU 예약량 제한 |
| limits.cpu | CPU 최대 사용량 제한 |
| requests.memory | Memory 예약량 제한 |
| limits.memory | Memory 최대 사용량 제한 |
| pods | Pod 개수 제한 |
| persistentvolumeclaims | PVC 개수 제한 |
환경에 맞게 설정합니다.
Kubernetes ResourceQuota 예제
예:
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-quota
namespace: production
spec:
hard:
requests.cpu: "10"
requests.memory: 20Gi
pods: "20"
Production Namespace에서 사용할 수 있는 Resource를 제한합니다.
Kubernetes ResourceQuota 확인 방법
Quota 확인:
kubectl get resourcequota
상세 확인:
kubectl describe resourcequota quota-name
현재 사용량과 제한량을 확인할 수 있습니다.
Kubernetes ResourceQuota와 Namespace 관계
ResourceQuota는 Namespace 단위로 적용됩니다.
구조:
Cluster
↓
Namespace A
↓
ResourceQuota
↓
Pod 제한
팀별 환경 분리에 적합합니다.
Kubernetes LimitRange와 ResourceQuota 차이
두 기능은 함께 사용됩니다.
| 구분 | 역할 |
|---|---|
| ResourceQuota | 전체 Namespace 제한 |
| LimitRange | 개별 Container 제한 |
예:
ResourceQuota:
팀 전체 CPU 20 Core 제한
LimitRange:
Container 하나당 CPU 2 Core 제한
둘을 조합해야 안정적인 관리가 가능합니다.
Kubernetes ResourceQuota와 Scheduler 관계
Scheduler는 ResourceQuota를 직접 계산하지 않습니다.
흐름:
Pod 요청
↓
API Server
↓
Quota 확인
↓
저장
↓
Scheduler 배치
Quota 검증은 API Server 단계에서 수행됩니다.
Kubernetes ResourceQuota와 CPU Memory 관리
운영 환경에서는 Request와 Limit 관리가 중요합니다.
Request:
Scheduler 판단 기준
Limit:
최대 사용량 제한
ResourceQuota는 이 값을 기준으로 제한합니다.
Kubernetes ResourceQuota 초과 문제
예:
Quota:
CPU 10 Core
현재 사용:
CPU 10 Core
새로운 Pod 생성
↓
Quota 초과
↓
생성 실패
Error:
exceeded quota
Resource 증가 또는 조정이 필요합니다.
Kubernetes ResourceQuota 장애 분석
확인 순서:
1단계
Quota 확인
kubectl get resourcequota
↓
2단계
Namespace Resource 확인
kubectl describe namespace
↓
3단계
Pod Request 확인
kubectl describe pod
Resource 부족 원인을 찾습니다.
Kubernetes Multi Tenant 환경과 ResourceQuota
Enterprise 환경에서는 여러 팀이 Cluster를 공유합니다.
예:
개발팀 Namespace
↓
Quota 설정
운영팀 Namespace
↓
별도 Quota 설정
서로 영향을 줄일 수 있습니다.
Kubernetes ResourceQuota와 Cloud 비용 관리
Cloud Kubernetes에서는 Resource 사용량이 비용과 연결됩니다.
Quota 적용:
↓
불필요한 Resource 사용 제한
↓
Cloud 비용 관리
FinOps 운영과 연결됩니다.
Kubernetes ResourceQuota 운영 전략
Production 환경:
Namespace 설계
↓
Quota 정책 설정
↓
Monitoring 구성
↓
Alert 설정
↓
정기 조정
지속적인 Resource 관리가 필요합니다.
Kubernetes ResourceQuota Monitoring
확인 항목:
- CPU 사용량
- Memory 사용량
- Quota 초과
- Resource 증가 추세
Prometheus와 연결하여 관리합니다.
Kubernetes ResourceQuota 장점
| 장점 | 설명 |
|---|---|
| Resource 보호 | 서비스 영향 방지 |
| Multi Tenant 지원 | 팀별 분리 |
| 비용 관리 | Cloud 비용 절감 |
| 운영 안정성 | Resource 예측 가능 |
ResourceQuota는 Kubernetes Cluster 운영의 핵심 관리 기능입니다.
자주 묻는 질문
ResourceQuota를 설정하면 Pod가 자동으로 제한되나요?
아닙니다.
설정된 Resource 요청량 기준으로 생성 가능 여부를 판단합니다.
ResourceQuota와 LimitRange는 같이 사용해야 하나요?
Production 환경에서는 함께 사용하는 경우가 많습니다.
Quota 초과하면 기존 Pod도 종료되나요?
아닙니다.
새로운 Resource 생성 요청이 제한됩니다.
마무리
Kubernetes ResourceQuota는 Namespace별 Resource 사용량을 제한하여 Cluster 안정성을 유지하는 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| ResourceQuota | Namespace 전체 제한 |
| LimitRange | Container 제한 |
| Namespace | 관리 영역 |
| API Server | Quota 검증 |
ResourceQuota 구조를 이해하면 Kubernetes Multi Tenant 환경과 대규모 Cluster 운영 전략을 설계할 수 있습니다.
다음 글에서는 Container 단위 Resource 기본값을 관리하는 Kubernetes LimitRange 완벽 가이드! Container CPU·Memory 기본 제한과 Resource 관리 구조 이해하기를 진행하겠습니다.