스케일링
GenD 플랫폼의 수평/수직 스케일링 구성과 HPA/VPA 설정입니다.
개요
GenD는 HPA(Horizontal Pod Autoscaler)와 VPA(Vertical Pod Autoscaler)를 사용하여 트래픽 변화에 자동으로 대응합니다. 주요 스케일링 대상은 gend-api, Trino Worker, Weaviate입니다.
HPA 구성
GenD API (infra/hpa/gend-api-hpa.yaml)
| 설정 | 값 |
|---|---|
| 최소 Replica | 2 (항상 HA) |
| 최대 Replica | 10 |
| CPU 목표 | 70% |
| 메모리 목표 | 80% |
| 스케일업 안정화 | 60초 관찰 후 2개씩 추가 |
| 스케일다운 안정화 | 300초 관찰 후 1개씩 제거 |
Trino Worker (infra/hpa/trino-hpa.yaml)
Trino 워커는 쿼리 부하에 따라 자동 스케일링됩니다.
Weaviate (infra/hpa/weaviate-hpa.yaml)
벡터 검색 부하에 따라 스케일링됩니다.
VPA 구성
infra/vpa/vpa-objects.yaml에서 수직 스케일링을 정의합니다. VPA는 Pod의 CPU/메모리 요청값을 실제 사용량에 맞게 자동 조정합니다.
스케일링 동작
스케일업 전략
트래픽 증가 → CPU 70% 초과 → 60초 관찰
→ 안정적으로 초과 시 → 최대 2개 Pod 추가 (60초 간격)
스케일다운 전략
트래픽 감소 → CPU 70% 미만 → 300초 관찰 (스파이크 보호)
→ 안정적으로 미만 시 → 최대 1개 Pod 제거 (120초 간격)
스케일다운 안정화 시간이 5분으로 설정되어 트래픽 스파이크 후 급격한 축소를 방지합니다.
수동 스케일링
# GenD API 수동 스케일
kubectl scale deployment gend-api -n gend --replicas=5
# Trino 워커 수동 스케일
helm upgrade trino trino/trino -n gend --set worker.replicas=3
# 현재 HPA 상태 확인
kubectl get hpa -n gend
리소스 모니터링
# 노드 리소스 사용량
kubectl top nodes
# Pod 리소스 사용량
kubectl top pods -n gend