diff --git a/vertical-pod-autoscaler/e2e/v1beta2/admission_controller.go b/vertical-pod-autoscaler/e2e/v1beta2/admission_controller.go index 49a5d12fbc..dd9711a863 100644 --- a/vertical-pod-autoscaler/e2e/v1beta2/admission_controller.go +++ b/vertical-pod-autoscaler/e2e/v1beta2/admission_controller.go @@ -260,14 +260,14 @@ var _ = AdmissionControllerE2eDescribe("Admission-controller", func() { { ContainerName: "hamster", Target: apiv1.ResourceList{ - apiv1.ResourceCPU: ParseQuantityOrDie("250m"), + apiv1.ResourceCPU: ParseQuantityOrDie("120m"), apiv1.ResourceMemory: ParseQuantityOrDie("100Mi"), // memory is downscaled }, }, { ContainerName: "hamster2", Target: apiv1.ResourceList{ - apiv1.ResourceCPU: ParseQuantityOrDie("250m"), + apiv1.ResourceCPU: ParseQuantityOrDie("120m"), apiv1.ResourceMemory: ParseQuantityOrDie("100Mi"), // memory is downscaled }, }, @@ -289,7 +289,7 @@ var _ = AdmissionControllerE2eDescribe("Admission-controller", func() { // request that limitrange allows. // Limit to request ratio should stay unchanged. for _, pod := range podList.Items { - gomega.Expect(*pod.Spec.Containers[0].Resources.Requests.Cpu()).To(gomega.Equal(ParseQuantityOrDie("250m"))) + gomega.Expect(*pod.Spec.Containers[0].Resources.Requests.Cpu()).To(gomega.Equal(ParseQuantityOrDie("120m"))) gomega.Expect(*pod.Spec.Containers[0].Resources.Requests.Memory()).To(gomega.Equal(ParseQuantityOrDie("250Mi"))) gomega.Expect(pod.Spec.Containers[0].Resources.Limits.Cpu().MilliValue()).To(gomega.BeNumerically(">=", 75)) gomega.Expect(pod.Spec.Containers[0].Resources.Limits.Memory().Value()).To(gomega.BeNumerically(">=", 250*1024*1024)) diff --git a/vertical-pod-autoscaler/pkg/utils/vpa/capping.go b/vertical-pod-autoscaler/pkg/utils/vpa/capping.go index 15d5c06d49..2744156a2e 100644 --- a/vertical-pod-autoscaler/pkg/utils/vpa/capping.go +++ b/vertical-pod-autoscaler/pkg/utils/vpa/capping.go @@ -344,7 +344,7 @@ func applyPodLimitRange(resources []vpa_types.RecommendedContainerResources, return resources } - if minLimit.Cmp(sumRecommendation) > 0 { + if minLimit.Cmp(sumRecommendation) > 0 && !sumLimit.IsZero() { for i := range pod.Spec.Containers { request := (*fieldGetter(resources[i]))[resourceName] cappedContainerRequest, _ := scaleQuantityProportionally(&request, &sumRecommendation, &minLimit) @@ -353,6 +353,10 @@ func applyPodLimitRange(resources []vpa_types.RecommendedContainerResources, return resources } + if sumLimit.IsZero() { + return resources + } + var targetTotalLimit resource.Quantity if minLimit.Cmp(sumLimit) > 0 { targetTotalLimit = minLimit