본문으로 건너뛰기

부하 생성

구성한 KEDA ScaledObject에 대한 응답으로 KEDA가 배포를 스케일링하는 것을 관찰하려면 애플리케이션에 부하를 생성해야 합니다. hey를 사용하여 워크로드의 홈 페이지를 호출하여 이를 수행합니다.

아래 명령은 다음과 같이 부하 생성기를 실행합니다:

  • 3개의 워커가 동시에 실행
  • 각각 초당 5개의 쿼리 전송
  • 최대 10분 동안 실행
~$export ALB_HOSTNAME=$(kubectl get ingress ui -n ui -o yaml | yq .status.loadBalancer.ingress[0].hostname)
~$kubectl run load-generator \
--image=williamyeh/hey:latest \
--restart=Never -- -c 3 -q 5 -z 10m http://$ALB_HOSTNAME/home

ScaledObject를 기반으로 KEDA는 HPA 리소스를 생성하고 HPA가 워크로드를 스케일링할 수 있도록 필요한 메트릭을 제공합니다. 이제 애플리케이션에 요청이 도달하고 있으므로 HPA 리소스를 관찰하여 진행 상황을 확인할 수 있습니다:

~$kubectl get hpa keda-hpa-ui-hpa -n ui --watch
NAME              REFERENCE       TARGETS       MINPODS   MAXPODS   REPLICAS   AGE
keda-hpa-ui-hpa   Deployment/ui   7/100 (avg)   1         10        1          7m58s
keda-hpa-ui-hpa   Deployment/ui   778/100 (avg)   1         10        1          8m33s
keda-hpa-ui-hpa   Deployment/ui   194500m/100 (avg)   1         10        4          8m48s
keda-hpa-ui-hpa   Deployment/ui   97250m/100 (avg)    1         10        8          9m3s
keda-hpa-ui-hpa   Deployment/ui   625m/100 (avg)      1         10        8          9m18s
keda-hpa-ui-hpa   Deployment/ui   91500m/100 (avg)    1         10        8          9m33s
keda-hpa-ui-hpa   Deployment/ui   92125m/100 (avg)    1         10        8          9m48s
keda-hpa-ui-hpa   Deployment/ui   750m/100 (avg)      1         10        8          10m
keda-hpa-ui-hpa   Deployment/ui   102625m/100 (avg)   1         10        8          10m
keda-hpa-ui-hpa   Deployment/ui   113625m/100 (avg)   1         10        8          11m
keda-hpa-ui-hpa   Deployment/ui   90900m/100 (avg)    1         10        10         11m
keda-hpa-ui-hpa   Deployment/ui   91500m/100 (avg)    1         10        10         12m

오토스케일링 동작에 만족하면 Ctrl+C로 watch를 종료하고 다음과 같이 부하 생성기를 중지할 수 있습니다:

~$kubectl delete pod load-generator

부하 생성기가 종료되면 HPA가 구성에 따라 최소 수로 복제본 수를 천천히 줄이는 것을 확인할 수 있습니다.

CloudWatch 콘솔에서도 부하 테스트 결과를 확인할 수 있습니다. 메트릭 섹션으로 이동하여 생성된 로드 밸런서와 타겟 그룹에 대한 RequestCountRequestCountPerTarget 메트릭을 찾습니다. 결과를 보면 처음에는 모든 부하가 단일 Pod에 의해 처리되었지만, KEDA가 워크로드를 스케일링하기 시작하면서 요청이 워크로드에 추가된 추가 Pod에 분산되는 것을 확인할 수 있습니다. load-generator Pod를 전체 10분 동안 실행하면 다음과 유사한 결과를 볼 수 있습니다.

Insights