본문으로 건너뛰기

스케일링

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)

설정
최소 Replica2 (항상 HA)
최대 Replica10
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

관련 문서