From c5e82a01b15136141801ba93de810fdf3165086b Mon Sep 17 00:00:00 2001 From: Seth Jennings Date: Tue, 19 Jul 2016 10:54:38 -0500 Subject: [PATCH] hpa: ignore scale targets whose replica count is 0 --- pkg/controller/podautoscaler/horizontal.go | 7 +++++-- pkg/controller/podautoscaler/horizontal_test.go | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pkg/controller/podautoscaler/horizontal.go b/pkg/controller/podautoscaler/horizontal.go index 9c6cc436b13..a6c2e0a2607 100644 --- a/pkg/controller/podautoscaler/horizontal.go +++ b/pkg/controller/podautoscaler/horizontal.go @@ -271,7 +271,10 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo rescaleReason := "" timestamp := time.Now() - if currentReplicas > hpa.Spec.MaxReplicas { + if scale.Spec.Replicas == 0 { + // Autoscaling is disabled for this resource + desiredReplicas = 0 + } else if currentReplicas > hpa.Spec.MaxReplicas { rescaleReason = "Current number of replicas above Spec.MaxReplicas" desiredReplicas = hpa.Spec.MaxReplicas } else if hpa.Spec.MinReplicas != nil && currentReplicas < *hpa.Spec.MinReplicas { @@ -323,7 +326,7 @@ func (a *HorizontalController) reconcileAutoscaler(hpa *autoscaling.HorizontalPo desiredReplicas = *hpa.Spec.MinReplicas } - // TODO: remove when pod idling is done. + // never scale down to 0, reserved for disabling autoscaling if desiredReplicas == 0 { desiredReplicas = 1 } diff --git a/pkg/controller/podautoscaler/horizontal_test.go b/pkg/controller/podautoscaler/horizontal_test.go index 611794402af..20f4e5ac416 100644 --- a/pkg/controller/podautoscaler/horizontal_test.go +++ b/pkg/controller/podautoscaler/horizontal_test.go @@ -665,7 +665,7 @@ func TestZeroReplicas(t *testing.T) { minReplicas: 3, maxReplicas: 5, initialReplicas: 0, - desiredReplicas: 3, + desiredReplicas: 0, CPUTarget: 90, reportedLevels: []uint64{}, reportedCPURequests: []resource.Quantity{},