스케일링 전략

지원 버전: Kubernetes 1.28+, KEDA 2.14+, VPA 1.0+ 마지막 업데이트: 2026년 2월 21일

< 이전: GitOps 자동화 | 목차 | 다음: 운영 알림 구성 >


개요

EKS 클러스터의 효율적인 스케일링은 성능, 비용, 안정성의 균형을 맞추는 핵심 운영 역량입니다. 이 문서에서는 CPU/메모리 외의 커스텀 메트릭을 활용한 HPA, 이벤트 드리븐 스케일링을 위한 KEDA, 리소스 최적화를 위한 VPA, 그리고 비용 효율적인 Spot 인스턴스 활용 전략을 다룹니다.

학습 목표

  • Prometheus 메트릭 기반 HPA 커스텀 메트릭 구성

  • KEDA를 활용한 다양한 이벤트 소스 기반 스케일링

  • VPA와 HPA의 효과적인 조합 전략 이해

  • Pod Deletion Cost를 활용한 스케일링 우선순위 제어

  • Spot 인스턴스의 안전한 활용 및 Fallback 전략


1. HPA Custom Metrics

기본 CPU/메모리 메트릭 외에 RPS, 큐 깊이, 비즈니스 메트릭 등을 기반으로 스케일링할 수 있습니다.

1.1 Prometheus Adapter 설치

Helm values.yaml:

Helm 설치:

1.2 RPS 기반 HPA

초당 요청 수(RPS)를 기반으로 Pod를 스케일링합니다.

애플리케이션 메트릭 노출:

PromQL 쿼리 테스트:

RPS 기반 HPA:

1.3 CloudWatch External Metrics

CloudWatch 메트릭을 HPA에서 사용하기 위해 CloudWatch Exporter를 설치합니다.

CloudWatch Exporter 설정:

External Metrics 기반 HPA:

1.4 HPA Behavior 상세 설정

스케일링 속도 제어:

Behavior 동작 설명:

1.5 테스트 및 검증


2. KEDA 이벤트 드리븐 스케일링

KEDA(Kubernetes Event-driven Autoscaling)는 다양한 이벤트 소스를 기반으로 워크로드를 스케일링합니다.

상세 내용은 KEDA 가이드를 참조하세요.

2.1 KEDA 아키텍처 요약

2.2 RPS ScaledObject (Prometheus Trigger)

2.3 PostgreSQL 세션 기반 스케일링

데이터베이스 연결 수를 기반으로 애플리케이션을 스케일링합니다.

2.4 SQS 큐 기반 스케일링

2.5 Cron 기반 스케일링

예측 가능한 트래픽 패턴에 맞춰 미리 스케일링합니다.

2.6 복합 트리거 (AND/OR 로직)

2.7 ScaledJob (배치 처리)

일회성 작업을 위한 Job 스케일링입니다.

2.8 KEDA + HPA 상호작용


3. VPA Pod Resize

VPA(Vertical Pod Autoscaler)는 Pod의 CPU/메모리 리소스 요청을 자동으로 조정합니다.

3.1 VPA 설치

Helm values:

3.2 UpdateMode 비교

UpdateMode
동작
사용 사례

Off

추천만 제공, 실제 변경 없음

분석 및 검토 단계

Initial

Pod 생성 시에만 적용

기존 Pod 영향 최소화

Recreate

Pod 재시작하여 적용

즉시 적용 필요 시

Auto

Initial + Recreate 조합

완전 자동화

3.3 VPA CRD 예시

3.4 In-Place Pod Resize (KEP-1287)

Kubernetes 1.27+에서 Pod를 재시작하지 않고 리소스를 변경할 수 있습니다.

리사이즈 실행:

3.5 Goldilocks (최적 리소스 추천 대시보드)

네임스페이스 활성화:

3.6 VPA + HPA 공존 전략

권장 패턴: CPU는 HPA, Memory는 VPA

공존 시 주의사항:


4. Custom Scheduler & Pod Deletion Cost

스케일 다운 시 어떤 Pod를 먼저 종료할지 제어할 수 있습니다.

상세 스케줄러 내용은 스케줄링 가이드arrow-up-right를 참조하세요.

4.1 Pod Deletion Cost 개념

동작 원리:

범위:

  • 최소값: -2147483648 (먼저 삭제)

  • 최대값: 2147483647 (마지막에 삭제)

  • 기본값: 0

4.2 사용 사례

사례 1: Spot 노드 Pod 우선 삭제

사례 2: 데이터 처리 Pod 보호

사례 3: 배치 작업 완료 후 우선 삭제

4.3 동적 Deletion Cost 관리 컨트롤러


5. Spot 노드 활용 전략

Spot 인스턴스를 활용하여 비용을 절감하면서 안정성을 유지하는 전략입니다.

5.1 Auto Mode NodePool with Spot

5.2 NodePool 분리 전략

5.3 Spot Interruption 처리

Node Termination Handler:

5.4 PDB + Pod Deletion Cost 조합

5.5 TopologySpreadConstraints로 분산

분산 결과 예시:

5.6 Graceful Shutdown 구현

graceful-shutdown.sh 예시:

5.7 비용 분석

Spot 절감 추정:

5.8 Fallback 전략


요약

스케일링 전략 선택 가이드

상황
권장 전략

웹 트래픽 기반 스케일링

HPA + Prometheus Adapter (RPS 메트릭)

큐 기반 워커 스케일링

KEDA + SQS/Kafka 트리거

예측 가능한 트래픽

KEDA Cron 트리거 + 메트릭 백업

리소스 최적화

VPA (추천 모드) + Goldilocks

비용 최적화

Spot NodePool + Deletion Cost

고가용성 요구

TopologySpread + PDB + On-Demand 백업

핵심 포인트

  1. HPA Custom Metrics: Prometheus Adapter로 비즈니스 메트릭 기반 스케일링

  2. KEDA: 이벤트 드리븐 워크로드에 최적, 0으로 스케일 다운 지원

  3. VPA: HPA와 공존 시 리소스 분리 필수 (CPU vs Memory)

  4. Pod Deletion Cost: 스케일 다운 시 중요 Pod 보호

  5. Spot 활용: 70%+ 비용 절감 가능, 적절한 Fallback 필수


참고 자료


< 이전: GitOps 자동화 | 목차 | 다음: 운영 알림 구성 >

마지막 업데이트