063. k8s 부하 테스트 — k6, Grafana, 비동기 구조
k8s 환경에서 부하 테스트는 애플리케이션 성능과 인프라 반응을 동시에 검증한다. k6를 Pod으로 실행해 클러스터 내부에서 트래픽을 발생시키고, Prometheus와 Grafana로 실시간 메트릭을 수집한다. 동기 API뿐 아니라 큐 기반 비동기 구조도 측정 포인트를 나누면 테스트 가능하다.
k8s 환경에서 부하 테스트는 애플리케이션 성능과 인프라 반응을 동시에 검증한다. k6를 Pod으로 실행해 클러스터 내부에서 트래픽을 발생시키고, Prometheus와 Grafana로 실시간 메트릭을 수집한다. 동기 API뿐 아니라 큐 기반 비동기 구조도 측정 포인트를 나누면 테스트 가능하다.
HPA(Horizontal Pod Autoscaler)는 CPU·메모리 사용률이나 커스텀 메트릭을 보고 Deployment의 파드 수를 자동으로 늘리고 줄인다. 스케일 계산이 어떻게 이뤄지는지, 실무에서 자주 만나는 함정(requests 미설정, 스케일 다운 지연, 파드 준비 시간)이 무엇인지, 커스텀 메트릭으로 어떻게 확장하는지를 설명한다.
HPA가 파드 수를 조절하면, 새 파드를 올릴 노드가 부족해지는 상황이 생긴다. Cluster Autoscaler는 Pending 상태인 파드를 감지해 노드를 추가하고, 유휴 노드를 제거해 비용을 절감한다. HPA와 어떻게 협력하는지, 노드를 어떻게 선택하는지, 스케일 인 중 파드 안전성을 어떻게 보장하는지, 그리고 차세대 도구인 Karpenter와의 차이를 설명한다.
HPA는 CPU와 메모리 사용률을 기준으로 파드를 스케일한다. 하지만 Kafka 큐에 메시지가 쌓이거나 SQS 대기열이 늘어나는 경우처럼 외부 이벤트 소스를 기준으로 스케일하고 싶을 때 HPA만으로는 한계가 있다. KEDA는 70개 이상의 외부 스케일러를 지원하는 이벤트 드리븐 오토스케일러로, 0개에서 N개까지 스케일하는 것도 지원한다.