Karpenter
Node Warmup
병렬 이미지 사전 캐싱을 통한 사전 노드 프로비저닝 — 첫 Pod 시작 시간을 31초에서 3초로 단축 (10배 빠름)
개요
Node Warmup은 워크로드 수요가 발생하기 전에 대기 노드를 사전에 프로비저닝합니다. NodePool에서 가장 큰 Pod를 수용할 수 있는 기존 노드가 없을 때, Wave는 warmup pod를 트리거하여 새 노드를 생성한 다음 컨테이너 이미지를 병렬로 사전 pull합니다.
이를 통해 cold start 지연을 제거합니다. 실제 워크로드가 도착할 때쯤 새 노드는 이미 실행 중이고 이미지가 캐시되어 있습니다. do-not-disrupt 어노테이션으로 보호되어 조기 통합을 방지합니다. EKS 전용 기능입니다.
반응적 노드 프로비저닝보다 나은 이유
| Vanilla Karpenter | Wave Node Warmup | |
|---|---|---|
| 시작 시간 | Cold start: 노드 + 이미지 pull에 31초 | 사전 warmup: 실제 Pod에 3초 (10배 빠름) |
| 이미지 준비 | 노드 준비 후 순차 이미지 pull | Warmed 노드에서 병렬 이미지 사전 pull |
| 노드 보호 | Warmed 노드가 조기에 통합될 수 있음 | do-not-disrupt 어노테이션으로 조기 종료 방지 |
주요 결과 및 이점
10배 빠름
첫 Pod 시작
수요 전에 대기 노드 준비 — 31초에서 3초로
이미지 Pull 시간 제로
이미지 사전 캐싱
Warmed 노드에서 컨테이너 이미지를 병렬로 사전 pull
보호됨
노드 통합 가드
do-not-disrupt 어노테이션으로 조기 통합 방지
작동 원리
1. 용량 모니터링
각 NodePool에서 가장 큰 Pod와 사용 가능한 노드 용량을 지속적으로 추적
2. 사전 프로비저닝
최대 Pod를 수용할 수 있는 노드가 없을 때 최대 + 버퍼 크기의 warmup pod 트리거
3. 이미지 사전 Pull
Warmed 노드에서 컨테이너 이미지를 사전 pull하는 병렬 Pod 생성
4. 노드 보호
워크로드가 도착할 때까지 통합을 방지하기 위해 do-not-disrupt로 warmed 노드에 어노테이션