KEDA를 사용한 Kubernetes 로드 스케일링
Source: Dev.to
왜 HPA가 파드를 스케일하지 못할 수 있는가
Horizontal Pod Autoscaler (HPA)는 CPU 또는 메모리 사용량만을 기준으로 스케일링을 수행합니다. 그러나 실제 워크로드는 요청 수, 큐 깊이, 데이터베이스 쿼리 결과와 같은 지표를 더 잘 반영합니다. 이러한 지표를 기반으로 스케일링이 필요할 때 HPA만으로는 충분하지 않습니다.
KEDA 소개
KEDA (Kubernetes Event‑Driven Autoscaling)는 메시지 큐, Prometheus/Grafana 메트릭, SQL 쿼리, HTTP 트래픽 등 외부 이벤트를 모니터링하고 이를 HPA가 사용할 수 있는 메트릭으로 노출함으로써 Kubernetes 생태계를 보완합니다. 이를 통해 HPA는 실제 애플리케이션 부하를 더 정확히 나타내는 신호를 기반으로 스케일링 결정을 내릴 수 있습니다.
주요 기능
- 이벤트‑드리븐 스케일링: 트래픽이 없을 때 워크로드를 0으로 축소하고, 이벤트가 발생하면 자동으로 다시 확장합니다.
- 애플리케이션 변경 불필요: 워크로드 자체는 그대로 유지되며, KEDA는 Kubernetes 자동 스케일링에 깔끔하게 추가되는 확장 기능입니다.
- 네이티브 통합: KEDA는 Kubernetes API 서버에 등록된
ScaledObject커스텀 리소스를 사용해 어떤 워크로드를 스케일하고 어떤 외부 트리거가 스케일링을 유발할지 정의합니다.
KEDA 작동 방식
- ScaledObject 정의 – 대상 워크로드와 외부 이벤트 소스를 지정하는 커스텀 리소스.
- Scaler – KEDA는 특화된 스케일러를 통해 메시지 큐, HTTP 트래픽, 모니터링 시스템 등 외부 트리거를 지속적으로 관찰합니다.
- Metrics Adapter – 이벤트가 감지되면 KEDA 컨트롤러가 수요를 평가하고 해당 메트릭을 메트릭 어댑터를 통해 노출합니다.
- HPA 소비 – HPA가 이 메트릭을 받아 파드 스케일링을 담당하는 유일한 컴포넌트가 됩니다.
- Scale‑to‑zero – 이벤트가 없을 경우 KEDA는 워크로드를 0으로 축소하도록 허용하고, 이벤트가 다시 발생하면 파드를 다시 확장합니다.
KCD Guatemala 2025에서의 PoC
KCD Guatemala 2025 행사에서 실제 HTTP 트래픽을 기반으로 Kubernetes 워크로드를 자동으로 스케일링하는 PoC가 시연되었습니다. 데모 내용은 다음과 같습니다:
- 경량 샘플 애플리케이션.
- KEDA HTTP 애드‑온 설정.
ScaledObject정의.- 이벤트‑드리븐 자동 스케일링을 보여주는 Kubernetes 매니페스트 (0에서 여러 복제본으로, 트래픽이 중단되면 다시 다운).
- 부하를 생성하고 실시간으로 스케일링 동작을 관찰할 수 있는 스크립트와 안내서.
목표는 프로덕션 수준의 시스템이 아니라 이벤트 기반 자동 스케일링을 명확히 보여주는 실습 예제를 제공하는 것이었습니다.
참고 자료
- 전체 설정, 소스 코드 및 문서: GitHub – keda-demo-kcd