Custom Metric(ex. RPS)으로 HPA 설정하기
두줄요약
Kubernetes HPA에서 Prometheus와 prometheus-adapter로 RPS Custom Metric을 노출하는 방법을 설명했습니다. Istio 메트릭 기반 RPS와 CPU 기준을 함께 설정해 pod 수를 확장합니다.
구조와 흐름
- HPA 컨트롤러의 주기적 메트릭 수집, 목표 레플리카 계산, 워크로드 스케일 요청 흐름
- Resource·Custom·External Metric별 분리된 Metric API와 수집 파이프라인
- 목표 pod 수를 현재 pod 수와 현재·목표 메트릭 비율로 계산하는 방식
선택 이유
- CPU·메모리 외 I/O, 스레드, 네트워크 병목을 함께 반영하기 위한 RPS 기준
- 유저 발화 응답 API 중심의 요청 특성에 적합한 RPS 지표
- cAdvisor 미제공 지표를 위한 Prometheus와 prometheus-adapter 조합
해결 방법
- Istio의
istio_requests_total을rate·sum으로 집계하고 가용 pod 수로 나눈 RPS 기록 규칙 - prometheus-adapter를 Custom Metric API Server로 배포하고
custom.metrics.k8s.io노출 확인 - HPA
Object메트릭에 서비스 RPS 목표값을 설정하고 CPUResource메트릭 병행
성능/운영 포인트
- 복수 메트릭 설정 시 각 기준의 목표 pod 수 중 최댓값 선택
- HPA pod 확장에 대비한 Node 스케일링 필요성
- GPU 사용량·응답 속도 등 서비스별 custom metric 확장 가능성
