Karpenter
Spot Workload Placement
Webhook 주입을 통한 무손실 spot/on-demand 분할 — spot 인스턴스는 on-demand 대비 60-90% 저렴, 배포별 세밀한 제어
개요
Spot Workload Placement는 구성 가능한 Pod Spot Threshold에 따라 Pod 복제본을 spot 및 on-demand 인스턴스에 자동으로 분할합니다. YAML 변경이 필요 없습니다 — MutatingWebhookConfiguration이 Pod 생성을 가로채고 nodeAffinity 규칙을 주입합니다.
배포별로 임계값을 설정하세요. 임계값 미만의 Pod는 on-demand 노드로, 임계값 이상의 Pod는 spot 노드로 이동합니다 (Prefer 또는 Require 전략). 가용성 보장을 유지하면서 대규모 비용 절감을 달성하세요. EKS 전용 기능입니다.
수동 Spot 관리보다 나은 이유
| 수동 YAML Affinity 규칙 | Wave Spot Placement | |
|---|---|---|
| 구성 | 모든 배포에 대해 YAML 편집 | WA 콘솔을 통해 임계값 한 번 설정 |
| 리스크 관리 | 전부 아니면 전무 spot 전략 | 폴백이 있는 배포별 세밀한 임계값 |
| 개발자 경험 | Kubernetes affinity 전문 지식 필요 | 무손실 webhook 주입 |
주요 결과 및 이점
60-90%
Spot 인스턴스 할인
Spot 인스턴스는 on-demand 대비 60-90% 저렴 — spot 비율에 따라 절감 효과 확대
무손실
Webhook 주입
YAML 변경 없음 — MutatingWebhookConfiguration이 affinity 처리
배포별
세밀한 제어
배포별 독립적인 임계값 및 전략
작동 원리
1. 임계값 구성
WA 콘솔을 통해 배포별 Pod Spot Threshold 설정
2. Webhook 가로채기
MutatingWebhookConfiguration이 Pod 생성 이벤트 가로채기
3. Affinity 주입
임계값 및 전략에 따라 nodeAffinity 규칙을 자동으로 주입
4. 지능형 배치
임계값 미만 Pod → on-demand, 임계값 이상 Pod → spot (Prefer 또는 Require)