편안히 주무세요, 클러스터 올바르게: 새벽 3시 현금 소진을 멈추세요
Source: Dev.to
문제: 항상 켜져 있는 클러스터
대부분의 Kubernetes 클러스터는 사용자가 활동하지 않을 때도 24시간 가동됩니다. CPU 기반 HPA는 도움을 주려 하지만, VPA가 추가되면 금세 무너지게 됩니다. 더 똑똑한 스케일링이 없으면 HPA와 VPA가 서로 충돌하여 유휴 파드와 낭비된 리소스가 남게 됩니다.
KEDA를 활용한 이벤트‑드리븐 스케일링
KEDA는 추측이 아닌 실제 이벤트에 기반해 스케일링을 할 수 있게 해줍니다:
- Prometheus 스케일러 – 관련 메트릭이 작업을 나타낼 때 스케일링을 트리거합니다.
- Cron 스케일러 – 명시적인 시간대(예: 비업무 시간)를 정의해 워크로드를 다운스케일합니다.
피크 시간대에는 메트릭 트리거가 빠른 스케일‑아웃을 유도하고, 트래픽이 적은 기간에는 Cron 트리거가 예측 가능한 스케일‑다운을 강제합니다. 두 가지를 결합하면 작업이 있을 때만 워크로드가 실행됩니다. 요청이 들어오면 파드가 빠르게 스케일‑아웃되고, 더 긴 스케일‑다운 기간이 남은 트래픽을 처리한 뒤 클러스터가 다시 축소됩니다.
Karpenter를 이용한 노드‑레벨 자동 스케일링
완벽한 파드 스케일링을 하더라도 유휴 노드는 여전히 비용이 발생합니다. Karpenter는 KEDA와 보완적으로 작동합니다:
- 워크로드가 사라지는 즉시 빈 노드를 통합하고 종료합니다.
- 필요할 때만 더 큰 “고성능” 노드를 프로비저닝합니다.
- 아침에 노드를 미리 준비하도록 Cron 트리거를 사용해 개발자에게 즉시 사용 가능한 환경을 제공합니다.
만약 새벽에 조기 트래픽이 발생하면, Cron 윈도우가 끝난 뒤 메트릭 기반 스케일링이 작동해 필요한 파드를 유지합니다.
전체 흐름
-
KEDA 트리거 정의
- 요청 속도 또는 레이턴시 메트릭을 위한 Prometheus 스케일러.
- 알려진 비피크 시간대를 위한 Cron 스케일러.
-
VPA 구성 – HPA와 충돌하지 않도록 파드 리소스를 조정합니다 (KEDA가 HPA를 대체합니다).
-
Karpenter 활성화 – 적절한 프로비저너 설정(인스턴스 타입, 제한, 통합 정책) 적용.
-
워밍업 Cron 트리거 추가 – 개발자가 첫 로그인을 하기 전에 노드가 준비되도록 합니다.
기대 효과
- 비용 절감 – 유휴 컴퓨트나 대기 노드에 대한 비용이 없습니다.
- 예측 가능한 성능 – 워크로드가 필요할 때 정확히 스케일링됩니다.
- 운영 부담 감소 – 자동 노드 프로비저닝 및 종료가 이루어집니다.
- 리소스 효율성 – 파드와 노드는 활성 기간에만 존재합니다.
유휴 시간에 비용을 지불하지 마세요. KEDA의 이벤트 기반 트리거와 Karpenter의 노드 관리가 인프라를 여러분을 위해 일하게 합니다.