[쿠버네티스] 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.