Karpenter 통합 개요
Karpenter 통합 기능은 Karpenter가 설치된 Amazon EKS 클러스터에서 사용할 수 있습니다. Wave 3.1.0 이상이 필요합니다.
Wave는 실시간 모니터링, 노드 사전 프로비저닝, 지능형 spot/on-demand 배치 기능으로 Karpenter를 확장합니다. 이 기능들은 Karpenter만으로는 제공되지 않습니다.
Karpenter 통합이란?
Karpenter는 적정 크기의 컴퓨팅 리소스를 자동으로 프로비저닝하는 AWS의 오픈소스 Kubernetes 노드 프로비저너입니다. Wave는 Karpenter 위에 세 가지 기능을 추가해 수동 노드 관리 부담을 없애줍니다.
1. Karpenter Dashboard
모든 NodePool에 걸쳐 Karpenter가 프로비저닝한 노드를 실시간으로 확인할 수 있습니다. 노드 수, 시간당 비용, spot 비율, disruption, 라이프사이클 이벤트를 하나의 화면에서 모니터링합니다. thrashing 패턴(노드가 반복적으로 생성되고 삭제되는 현상)을 자동으로 감지하고 NodePool별 비용 내역을 제공합니다.
자세한 내용은 Dashboard 가이드를 참고하세요.
2. Node Warmup
노드를 미리 프로비저닝하고 컨테이너 이미지를 병렬로 pre-caching합니다. NodePool 내 기존 노드가 가장 큰 pod를 수용할 수 없을 때, Wave는 warmup pod를 트리거해 새 노드를 생성하고 컨테이너 이미지를 병렬로 pre-pull합니다. 이를 통해 첫 pod 시작 시간이 31초에서 3초로 단축됩니다(10배 빠름). 웜업된 노드는 do-not-disrupt annotation으로 보호되어 조기 consolidation을 방지합니다.
자세한 내용은 Node Warmup 가이드를 참고하세요.
3. Spot Workload Placement
MutatingWebhookConfiguration을 통해 spot/on-demand 배치를 자동으로 분할합니다. deployment별로 Pod Spot Threshold를 설정하면, 임계값 이하의 pod는 on-demand 노드에, 임계값을 초과하는 pod는 spot 노드에 배치됩니다. YAML 변경이 필요 없습니다. Prefer(on-demand로 폴백) 및 Require(spot 고정) 전략을 지원합니다. spot 인스턴스는 on-demand 대비 60~90% 저렴합니다.
자세한 내용은 Spot Workload Placement 가이드를 참고하세요.
사전 요구사항
- Amazon EKS 클러스터 (Karpenter는 EKS 전용입니다)
- Karpenter가 설치되어 있고 NodePool이 하나 이상 구성되어 있어야 합니다
- Wave 3.1.0 이상
- cert-manager 설치 (Spot Workload Placement webhook TLS에 필요)
아키텍처
Wave는 세 가지 경로로 Karpenter와 통합됩니다.
- 메트릭 수집: WA Metrics Agent가 gRPC를 통해 Karpenter의 node, NodePool, NodeClaim 데이터를 수집하여 WA Core로 전달해 처리합니다.
- 노드 관리: WA Core가 NodePool 용량을 모니터링하다가 사전 프로비저닝이 필요한 시점에 warmup pod를 트리거합니다.
- 웹훅 삽입: MutatingWebhookConfiguration이 pod 생성 이벤트를 가로채 설정된 임계값에 따라 spot/on-demand 배치를 위한
nodeAffinity규칙을 주입합니다.
시작하기
단계별 설치 및 구성 방법은 Getting Started 가이드를 참고하세요.