Vertical Pod Autoscaler & Auto Mode

VPA와 Auto Mode의 시너지 효과

VPA

  • Pod 리소스 사용량 분석
  • 최적 requests/limits 추천
  • CPU/Memory 자동 조정
  • 14일 히스토리 기반 분석
VPA 최적화된 requests
Auto Mode가 최적 노드 선택

Auto Mode

  • 실제 Pod requests 기반 선택
  • 최적 인스턴스 타입 매칭
  • Bin-packing 최적화
  • Consolidation 자동 수행

VPA

Pod의 CPU/Memory 요청을 자동으로 최적화

Auto Mode

최적화된 요청 기반으로 적합한 인스턴스 자동 선택

Synergy

리소스 낭비 감소 + 노드 비용 절감

VPA 모드 비교

updateMode별 동작 방식과 권장 사용 사례

Off 모드

추천값만 제공하고, Pod를 변경하지 않습니다. 가장 안전한 분석 모드입니다.

장점

Pod 재시작 없음, 안전하게 분석 가능, 프로덕션에서 먼저 테스트

단점

자동 적용되지 않음, 수동 업데이트 필요

권장 사용 사례

신규 워크로드 분석, 프로덕션 사전 검증, 리소스 패턴 파악

YAMLapiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: "Off"

Initial 모드

Pod 생성 시에만 추천값을 적용하고, 실행 중인 Pod는 변경하지 않습니다.

장점

실행 중 Pod 안정성 보장, 롤링 업데이트 시 자연스럽게 적용

단점

즉시 적용되지 않음, 새 Pod 생성까지 대기 필요

권장 사용 사례

Stateful 워크로드, 긴 실행 배치 작업, 재시작에 민감한 서비스

YAMLapiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: "Initial"

Recreate 모드

추천값이 변경되면 Pod를 재생성하여 적용합니다. 잠시 다운타임이 발생할 수 있습니다.

장점

즉시 최적화 적용, 리소스 효율성 극대화, 자동화된 관리

단점

Pod 재시작 발생, PDB 설정 필요, 잠재적 다운타임

권장 사용 사례

Stateless 워크로드, 개발/스테이징 환경, 다중 레플리카 서비스

YAMLapiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: "Recreate"

Auto 모드

VPA가 자동으로 최적의 방식(Initial 또는 Recreate)을 선택합니다.

장점

최소 개입, 상황에 맞는 자동 선택, 편리한 관리

단점

예측 어려움, 세밀한 제어 불가, 현재는 Recreate와 동일

권장 사용 사례

일반적인 웹 서비스, 마이크로서비스, 유연한 운영 환경

YAMLapiVersion: autoscaling.k8s.io/v1 kind: VerticalPodAutoscaler metadata: name: my-app-vpa spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app updatePolicy: updateMode: "Auto"

VPA 추천값 시뮬레이터

리소스 사용량 기반 VPA 추천값 시각화

1000m
300m
2Gi
512Mi
예상 리소스 절감률
65%
# VPA Recommendation target: CPU 345m, Memory 589Mi lowerBound: CPU 300m, Memory 512Mi upperBound: CPU 400m, Memory 700Mi

VPA + Auto Mode 연동 패턴

리소스 최적화에서 노드 비용 절감까지의 자동화 흐름

1

VPA 리소스 모니터링

14일간 Pod CPU/Memory 사용 패턴 분석

2

추천값 생성

분석 결과: CPU 300m, Memory 512Mi 권장

3

Pod Requests 업데이트

VPA가 Pod spec 자동 수정 (Recreate/Auto 모드)

4

Auto Mode 변경 감지

새로운 Pod requests를 기반으로 스케줄링 재평가

5

최적 인스턴스 선택

c6g.large에서 c6g.medium으로 다운사이징

6

Consolidation 수행

오버프로비저닝된 노드 통합, 빈 노드 제거

Tip: VPA Off 모드로 먼저 분석한 후, 안정적인 추천값이 나오면 Recreate 또는 Auto 모드로 전환하세요.

리소스 요청 최적화 전략

QoS Class와 Request/Limit 설정 가이드

CPU Settings

500m
1000m

Memory Settings

512Mi
512Mi

Guaranteed

request == limit

Burstable

request < limit

BestEffort

no request/limit

Production Best Practices

  • CPU: request만 설정, limit 없음 - Burstable로 CPU throttling 방지
  • Memory: request == limit - Guaranteed로 OOM 방지
  • 권장 패턴: CPU request only + Memory guaranteed
Recommended Patternresources: requests: cpu: "500m" # CPU request only memory: "512Mi" # Memory guaranteed limits: # cpu: (no limit) # Allows bursting memory: "512Mi" # Same as request
현재 설정: CPU Burstable + Memory Guaranteed - 권장 패턴입니다!

비용 절감 사례 (Before/After)

VPA + Auto Mode 최적화 실제 적용 결과

Before (최적화 전)

Nodes 20개 (m5.xlarge)
CPU 활용률 25%
Memory 활용률 30%
월 비용
$5,840

After (최적화 후)

Nodes 8개 (m6g.large, c6g.xlarge 혼합)
CPU 활용률 65%
Memory 활용률 70%
월 비용
$1,752

Total Savings

70%
VPA 리소스 적정화
20-40%
Graviton (ARM) 전환
20%
Spot 활용
60-70%
Consolidation
10-30%

Best Practices 체크리스트

리소스 최적화를 위한 운영 가이드

VPA 설정

  • VPA를 Off 모드로 먼저 분석 (2주)
  • 핵심 워크로드부터 VPA 적용
  • CPU는 request만, Memory는 request=limit
  • Disruption Budget으로 안전한 교체

NodePool 전략

  • NodePool 분리: 웹/배치/GPU
  • Graviton 인스턴스 허용 (arm64)
  • Spot 혼합 전략 (Stateless 워크로드)
  • Pod Priority로 중요 워크로드 보호

비용 관리

  • 정기적 비용 리뷰 (월 1회)
  • Cost Allocation Tags 적용

모니터링

  • VPA 추천값 대시보드 구성
  • 노드 활용률 알림 설정

추가 학습 리소스

심화 학습을 위한 참고 자료

전체 과정 요약

Key Takeaways

BLOCK 01

EKS Auto Mode 내부 아키텍처

Auto Mode는 Karpenter 기반 - NodePool/NodeClass로 세밀한 제어 가능. 인스턴스 선택, Consolidation, Drift 처리 자동화.

BLOCK 02

노드 라이프사이클 모니터링

Prometheus 쿼리 + AlertManager로 노드 가시성 확보. Spot 인터럽트 대응, expireAfter 전략으로 Day-2 운영 안정화.

BLOCK 03

3-Signal Correlation

Exemplars + Derived Fields + tracesToLogs로 Logs/Metrics/Traces 상관분석. MTTR 단축 및 근본 원인 분석 가속화.

BLOCK 04

VPA + Auto Mode 최적화

VPA로 리소스 requests 최적화, Auto Mode가 최적 노드 선택. 조합하면 70%+ 비용 절감 가능.

Q&A

질문과 답변

오늘 교육이 도움이 되셨나요?

피드백은 더 나은 콘텐츠를 만드는 데 큰 힘이 됩니다.

Session: EKS Auto Mode & Observability (2 Hours)