korean-docs
Wave Karpenter
스팟 워크로드 배치

Spot Workload Placement

Spot Workload Placement는 MutatingWebhookConfiguration을 통해 deployment 레플리카를 On-Demand와 Spot 노드로 자동 분할합니다. YAML 변경이 필요 없습니다. 사이드바에서 Karpenter > Spot Workload로 이동하세요.

Spot Workload Placement list view

상태 표시기

페이지 상단의 상태 배지는 webhook 인프라의 정상 여부를 보여줍니다.

  • Webhook TLS: TLS 인증서 상태
  • Webhook Config: MutatingWebhookConfiguration 등록 상태
  • CA Bundle: 인증 기관(CA) 번들 상태
  • Namespace Selector: namespace 대상 구성

Spot Placement가 정상 동작하려면 모든 표시기가 녹색이어야 합니다.

Spot Placement 목록

목록 화면에는 구성된 모든 spot placement 규칙이 표시됩니다.

컬럼설명
NamespaceKubernetes namespace
Deployment대상 deployment 이름
Workload Typedeployment 유형
ThresholdPod Spot Threshold 값
Spot Placement Rule시각적 표현 (파란색 pod는 On-Demand, 주황색 pod는 Spot)
StrategyPrefer Spot 또는 Require Spot
Enabled활성 상태

새 규칙을 추가하려면 + Create를 클릭하고, 기존 규칙을 수정하려면 해당 행을 클릭하세요.

Spot Placement 규칙 생성

+ Create를 클릭하면 구성 패널이 열립니다.

Spot Workload Placement configuration

1단계: Deployment 선택

폼에서 대상 NamespaceDeployment를 선택합니다.

2단계: Pod Split Threshold 설정

Threshold 값을 입력합니다. 이 값 이하의 pod 레플리카는 On-Demand 인스턴스에서 실행되고, 이 값을 초과하는 pod는 Spot 인스턴스에 배치됩니다.

UI는 분할 상태를 시각적으로 보여줍니다. On-Demand는 파란색 pod, Spot은 주황색 pod로 표시됩니다. 예를 들어 threshold가 5이고 레플리카가 10개라면 다음과 같습니다.

  • Pod 1~5: 🔵🔵🔵🔵🔵 (On-Demand)
  • Pod 6~10: 🟠🟠🟠🟠🟠 (Spot)

3단계: Placement Strategy 선택

Strategy설명
Prefer SpotSpot 인스턴스를 우선 사용하고, 사용할 수 없으면 On-Demand로 폴백합니다. 대부분의 워크로드에 권장합니다
Require SpotSpot에만 배치를 강제합니다. Spot 용량이 없으면 pod가 Pending 상태로 남습니다. 장애 허용이 가능한 배치 작업에 사용하세요

4단계: 활성화

Enabled를 ON으로 토글합니다. 비활성화하면 webhook이 Spot affinity 규칙을 주입하지 않습니다.

5단계: 저장

Save를 클릭하면 규칙이 활성화됩니다.

동작 방식

  1. Threshold Configuration: WA Console에서 deployment별 Pod Spot Threshold를 설정합니다
  2. Webhook Interception: MutatingWebhookConfiguration이 pod 생성 이벤트를 가로챕니다
  3. Affinity Injection: pod의 순번(ordinal index)이 threshold를 기준으로 어디에 속하는지에 따라 Wave가 nodeAffinity 규칙을 주입합니다
  4. Intelligent Placement: threshold 이하 pod → On-Demand, threshold 초과 pod → Spot

Webhook TLS 설정

Spot Placement가 동작하려면 MutatingWebhookConfiguration에 유효한 TLS 인증서가 필요합니다. 설정 방법은 Getting Started 가이드를 참고하세요.

⚠️

유효한 TLS 인증서가 없으면 Kubernetes API 서버가 webhook 요청을 거부하여 spot placement 규칙이 적용되지 않습니다. 프로덕션 환경에서는 자동 갱신이 되는 cert-manager를 사용하세요.

비용 영향

Spot 인스턴스는 동일 사양의 On-Demand 인스턴스보다 60~90% 저렴합니다 (AWS 가격 기준). 실제 절감액은 spot 비율에 따라 달라지며, threshold를 초과하는 레플리카가 많을수록 절감 폭이 커집니다.

60~90%라는 수치는 AWS의 spot 인스턴스 가격과 on-demand 가격의 차이를 의미합니다. 전체 컴퓨팅 비용 절감액은 Spot 인스턴스에서 실행되는 pod 비율에 따라 달라집니다. 비용은 Dashboard에서 모니터링하세요.

제약 사항

  • EKS 전용: Karpenter가 설치된 Amazon EKS가 필요합니다
  • Spot interruption: AWS는 2분 전 통지 후 Spot 인스턴스를 회수할 수 있습니다. 가용성 보장이 필요한 워크로드에는 Prefer 전략을 사용하세요
  • Stateful 워크로드: 적절한 데이터 복제 없이는 데이터베이스나 영구 큐(persistent queue)에 사용하지 않는 것이 좋습니다

관련 문서