Kubernetes 네임스페이스 리소스 할당량 점검

네임스페이스의 총 할당량과 개별 컨테이너 제한을 구분해 관리하세요.

설명

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 수를 제한하며, 이 설정이 개별 컨테이너의 실행 사용량 상한을 정하지는 않습니다.

참조