Kubernetes 컨테이너 CPU request 설정 점검

실제 CPU 요구량에 맞는 스케줄링 기준을 설정하세요.

설명

CPU request는 Kubernetes의 노드 배치와 CPU 경쟁 시 자원 배분에 사용됩니다. 실제 필요량보다 낮으면 너무 많은 워크로드가 같은 노드에 배치되어 응답 지연이 커질 수 있습니다. request는 CPU 사용 상한이 아니므로 여유가 있으면 더 많은 CPU를 사용할 수 있습니다.

LimitRange가 기본 request를 제공할 수 있으며 별도 기본값 없이 CPU limit만 지정하면 그 값이 request로 사용됩니다. 실제 배포된 요청량을 확인하세요.

잠재적 영향

  • CPU 요구량을 낮게 잡으면 노드 자원 경쟁과 성능 저하가 발생할 수 있습니다.
  • 과도한 request는 필요한 노드 용량을 늘리거나 파드 배치를 막을 수 있습니다.

해결 방법

  • 실제 CPU 사용량과 지연 요구사항에 맞춰 resources.requests.cpu를 설정하고 정상·최대 부하를 시험하세요.
  • LimitRange 기본값과 적용된 CPU limit을 함께 확인하고 실제 파드 request를 검토하세요. 예제의 250m가 모든 워크로드에 적합한 것은 아닙니다.

예시

이미지 주소는 실제 검증된 이미지로 바꾸세요. CPU limit을 500m로 유지하면서 request를 명시하는 비교입니다. 별도 기본값이 없으면 변경 전 request도 500m가 됩니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      resources:
        requests:
          memory: "64Mi"
        limits:
          cpu: "500m"
          memory: "128Mi"

명시적 CPU request가 없지만 limit에서 500m가 request로 적용될 수 있습니다.

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: frontend
spec:
  containers:
    - name: app
      image: images.my-company.example/app:v4
      resources:
        requests:
          cpu: "250m"
          memory: "64Mi"
        limits:
          cpu: "500m"
          memory: "128Mi"

CPU request를 250m로 명시합니다. 기존의 유효한 요청량보다 낮아질 수 있으므로 실제 요구를 확인해야 합니다.

참조