Post

[쿠버네티스] CPU 기반 HPA

이번 글은 K6 테스트를 한 후 CPU 기반의 HPA가 늦게 반응하는 이유에 대한 공부이다.

아래 문서를 참고하였다.

https://kubernetes.io/docs/concepts/workloads/autoscaling/horizontal-pod-autoscale/

CPU 기반 HPA가 느린 이유

결론부터 간단하게 말하자면 요청량이 아니라 사용량에 기반하며 아래과 같이 동작한다.

트래픽 증가 → CPU 증가 → Threshold 초과 → scale-out

또한 실시간이 아니라고 한다.

기본적으로

  • metrics-server scarpe 주기 (~15초)
  • HPA evaluation (~15초)

이기 때문에 최악의 경우 30초 이상 뒤에 반응을 한다.

또한 우리 서비스의 경우 burst traffic이기 때문에 몇초 사이에 트래픽 증가가 2~3배까지 증가할 수 있다.

이를 해결하기 위해 공식에서도 KEDA, custom metrics, request 기반의 스케일링을 추가로 권장한다.

그렇다면 request 기반의 스케일링은 무조건 좋은가?

당연하지만 그렇지 않다.

  • Queue Length가 pod를 과부화 시킬만큼 길지 않을 수 있다.
    • 그저 가벼운 요청은 과부화를 시키지 않기 때문에 확장이 불필요
  • DB의 속도, API 속도 등의 병목을 반영할 수 없다
    • 이런 경우에는 스케일링 해도 해결이 되지 않는다

이러한 경우를 위해서 CPU + request를 같이 사용하게 된다면 어느정도 해결이 가능하다

This post is licensed under CC BY 4.0 by the author.