설명
ResourceQuota는 네임스페이스에서 허용할 리소스 요청량의 합계나 객체 수를 제한합니다. 필요한 할당량이 없으면 한 팀이나 워크로드가 과도한 리소스를 요청할 수 있습니다. CPU·메모리 요청량의 할당량은 실제 실행 사용량을 직접 제한하거나 용량을 예약하는 기능과는 다릅니다.
잠재적 영향
- 과도한 리소스 요청이나 Pod 생성이 다른 워크로드의 배치에 영향을 줄 수 있습니다.
- 할당량을 너무 작게 잡으면 필요한 신규 객체 생성이나 변경이 거부될 수 있습니다.
해결 방법
- 네임스페이스의 용도와 용량에 맞는 ResourceQuota를 설정하세요. CPU·메모리 요청량 할당량을 쓰면 Pod에 필요한 requests를 명시하거나 LimitRange 기본값을 마련하세요.
- 실행 중 사용량은 컨테이너별 limits 등으로 별도 관리하고, 변경 후 신규 요청의 허용·거부 동작을 확인하세요. 할당량 추가만으로 기존 Pod가 종료되지는 않습니다.
예시
mynewpod 네임스페이스가 이미 있다고 가정합니다. 이미지와 수치는 실제 요구에 맞게 바꾸세요. cpu: "1000"은 1000 CPU를 뜻하며 1000m가 아닙니다. 예시는 CPU·메모리 요청량과 Pod 수만 제한합니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: mynewpod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
Pod를 만들지만 이 발췌에는 네임스페이스 할당량이 없습니다. 별도 정책의 존재와 실제 사용량을 확인해야 합니다.
변경 후
yaml
apiVersion: v1
kind: ResourceQuota
metadata:
name: pods-high
namespace: mynewpod
spec:
hard:
cpu: "1000"
memory: 200Gi
pods: "10"
---
apiVersion: v1
kind: Pod
metadata:
name: pod1
namespace: mynewpod
spec:
containers:
- name: app
image: images.my-company.example/app:v4
resources:
requests:
cpu: "250m"
memory: "64Mi"
ResourceQuota와 Pod의 요청량을 함께 명시합니다. CPU·메모리 요청량 합계와 Pod 수를 제한하며, 이 설정이 개별 컨테이너의 실행 사용량 상한을 정하지는 않습니다.