K8s HPA minReplicas

정의 (Definition)

minReplicas는 Horizontal Pod Autoscaler(HPA)가 설정할 수 있는 레플리카 수의 하한 이며, 목표 메트릭이 낮더라도 최종 결과는 이 값보다 작아지지 않습니다.

문제가 되는 배경 (Problem Context)

부하가 일시적으로 낮아졌을 때 레플리카를 과도하게 줄이면, 다음 트래픽 상승 시 기동·워밍업·캐시 적중률 회복 때문에 응답 지연과 에러가 증가할 수 있습니다.

핵심 메커니즘 (How it Works)

HPA는 목표 메트릭으로 계산한 원하는 레플리카를 minReplicasmaxReplicas 사이로 클램프(clamp)합니다. 결과적으로 minReplicas는 “항상 살아있는 최소 인스턴스 수”를 강제합니다.

불변 조건과 보장 범위 (Invariants & Guarantees)

  • 보장: HPA가 제어하는 대상에 한해, 목표 레플리카는 minReplicas보다 작아지지 않습니다.
  • 비보장: 파드가 항상 Ready 상태로 유지된다는 보장은 없습니다(프로브 실패/노드 장애/이미지 풀 실패 등).

비유 (Analogy)

minReplicas는 “항상 열어두는 최소 창구 수”입니다. 손님이 없어도 최소 인원은 대기합니다.

실무적 함의 (Operational Implications)

  • 콜드 스타트 비용이 큰 워크로드(예: 상태 초기화·캐시 워밍업·대형 JVM/Go 힙 성장)가 있으면 minReplicas를 올리는 편이 지연을 줄입니다.
  • minReplicas를 올리는 것은 비용을 증가시키므로, HPA의 목적(변동성 흡수)과 운영 예산 사이에서 경계를 명확히 잡아야 합니다.

주의사항 / 오해 (Pitfalls & Misconceptions)

  • minReplicas를 0으로 두고 싶다면(스케일-투-제로), 기본 HPA만으로는 제약이 있을 수 있으며 KEDA 등 다른 메커니즘을 고려해야 합니다.
  • minReplicas를 높게 잡아두고 scaleDown 정책을 공격적으로 두면(behavior), 의도한 안정성 목표와 충돌할 수 있습니다.

References