K8s HPA minReplicas
정의 (Definition)
minReplicas는 Horizontal Pod Autoscaler(HPA)가 설정할 수 있는 레플리카 수의 하한 이며, 목표 메트릭이 낮더라도 최종 결과는 이 값보다 작아지지 않습니다.
문제가 되는 배경 (Problem Context)
부하가 일시적으로 낮아졌을 때 레플리카를 과도하게 줄이면, 다음 트래픽 상승 시 기동·워밍업·캐시 적중률 회복 때문에 응답 지연과 에러가 증가할 수 있습니다.
핵심 메커니즘 (How it Works)
HPA는 목표 메트릭으로 계산한 원하는 레플리카를 minReplicas와 maxReplicas 사이로 클램프(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
- Kubernetes Docs: Horizontal Pod Autoscaling
- Related Note: K8s HPA maxReplicas
- Related Note: K8s HPA behavior