피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Node Provisioning 시간을 300초에서 60초 미만으로 단축한 Karpenter 전환 전략
Why Kubernetes Cluster Autoscaler Loses to Karpenter After 6 Months in Production
AI 요약
Context
EKS 환경에서 Cluster Autoscaler(CA)의 API Polling 기반 스케일링으로 인한 고지연 발생. ASG 중심의 정적 노드 그룹 관리 구조로 인해 Node Group Sprawl 및 오프피크 시간대 30%의 유휴 자원 낭비 초래.
Technical Solution
- Kubernetes Scheduler 이벤트를 Informer로 직접 수신하는 Event-driven 아키텍처 채택으로 감지 지연 제거
- Bin-packing 시뮬레이션을 통한 최적 인스턴스 선택 및 EC2 API 직접 호출로 프로비저닝 경로 최적화
- ASG 기반의 정적 설정을 NodePool과 EC2NodeClass CRD 기반의 선언적 리소스 관리 체계로 전환
- 단일 NodePool 내 다중 Instance Family 및 Capacity Type(Spot/On-demand) 정의를 통한 Provisioner Drift 해결
- 노드 간 경계를 넘는 Consolidation 로직 적용으로 저이용 자원 회수 효율 극대화
실천 포인트
- KEDA와 같은 Event-driven Pod Autoscaler 사용 시 인프라 계층에서도 Karpenter 도입 검토 - Stateful Workload 운영 시 데이터 손실 방지를 위한 PDB(Pod Disruption Budget) 설정 선행 - IAM Role에 ec2:RunInstances 및 ec2:TerminateInstances 권한 부여 및 보안 감사 수행 - 비용 최적화를 위해 consolidationPolicy를 워크로드 특성(WhenEmpty vs WhenUnderutilized)에 따라 차등 설정