← 문제 라이브러리
K8s 입문 K8S 036 · 16분

트래픽이 몰려 CPU가 가득 찼는데 HPA가 파드를 늘리지 않음

점심 프로모션으로 API 트래픽이 평소의 4배가 됐습니다.

검수된 문제무료
시나리오

점심 프로모션으로 API 트래픽이 평소의 4배가 됐습니다. 파드들의 CPU 사용량이 1코어 가까이 치솟아 응답이 2초 넘게 걸리는데, CPU 70%에 맞춰 둔 HPA가 파드를 3개에서 늘리지 않습니다. 이 서비스는 지난달 다른 팀에게서 넘겨받았고, 넘겨받으면서 매니페스트의 리소스 설정을 '정리'했다고 합니다. 온콜 담당자는 metrics-server가 고장 났다며 재시작하려고 합니다. HPA 설정 파일은 넘겨받은 뒤로 한 번도 바뀌지 않았습니다. 이대로면 30분 안에 타임아웃 오류가 결제 쪽으로 번질 것 같습니다.

단서
kubectl get hpa api ; top
NAME   REFERENCE        TARGETS         MINPODS   MAXPODS   REPLICAS
api    Deployment/api   <unknown>/70%   3         20        3

$ kubectl top pods -l app=api
NAME                   CPU(cores)   MEMORY(bytes)
api-6d8f7c9b5-4kq2x    962m         410Mi
kubectl describe hpa api (이벤트)
Warning  FailedGetResourceMetric  horizontal-pod-autoscaler  failed to get cpu utilization: missing request for cpu in container "api" of Pod "api-6d8f7c9b5-4kq2x"
Deployment (resources 부분)
containers:
  - name: api
    image: registry.acme.dev/api:3.2.0
    resources: {}

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • HPA의 'CPU %'가 무엇을 기준으로 계산되는지
  • 지표 수집 장애와 설정 누락 구분하기
점검 체크리스트
  1. kubectl get hpa 의 TARGETS 값(<unknown>인지)
  2. kubectl describe hpa 의 경고 이벤트
  3. Deployment의 resources.requests.cpu 설정