@@ -24,6 +24,7 @@ import (
24
24
25
25
vpa_types "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1"
26
26
"k8s.io/autoscaler/vertical-pod-autoscaler/pkg/utils/limitrange"
27
+ resourcehelpers "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/utils/resources"
27
28
vpa_api_util "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/utils/vpa"
28
29
)
29
30
@@ -53,14 +54,15 @@ func GetContainersResources(pod *core.Pod, vpaResourcePolicy *vpa_types.PodResou
53
54
addAll bool , annotations vpa_api_util.ContainerToAnnotationsMap ) []vpa_api_util.ContainerResources {
54
55
resources := make ([]vpa_api_util.ContainerResources , len (pod .Spec .Containers ))
55
56
for i , container := range pod .Spec .Containers {
57
+ containerRequests , containerLimits := resourcehelpers .ContainerRequestsAndLimits (container .Name , pod )
56
58
recommendation := vpa_api_util .GetRecommendationForContainer (container .Name , & podRecommendation )
57
59
if recommendation == nil {
58
60
if ! addAll {
59
61
klog .V (2 ).InfoS ("No recommendation found for container, skipping" , "container" , container .Name )
60
62
continue
61
63
}
62
64
klog .V (2 ).InfoS ("No match found for container, using Pod request" , "container" , container .Name )
63
- resources [i ].Requests = container . Resources . Requests
65
+ resources [i ].Requests = containerRequests
64
66
} else {
65
67
resources [i ].Requests = recommendation .Target
66
68
}
@@ -70,7 +72,7 @@ func GetContainersResources(pod *core.Pod, vpaResourcePolicy *vpa_types.PodResou
70
72
}
71
73
containerControlledValues := vpa_api_util .GetContainerControlledValues (container .Name , vpaResourcePolicy )
72
74
if containerControlledValues == vpa_types .ContainerControlledValuesRequestsAndLimits {
73
- proportionalLimits , limitAnnotations := vpa_api_util .GetProportionalLimit (container . Resources . Limits , container . Resources . Requests , resources [i ].Requests , defaultLimit )
75
+ proportionalLimits , limitAnnotations := vpa_api_util .GetProportionalLimit (containerLimits , containerRequests , resources [i ].Requests , defaultLimit )
74
76
if proportionalLimits != nil {
75
77
resources [i ].Limits = proportionalLimits
76
78
if len (limitAnnotations ) > 0 {
@@ -88,19 +90,19 @@ func GetContainersResources(pod *core.Pod, vpaResourcePolicy *vpa_types.PodResou
88
90
resources [i ].Limits = core.ResourceList {}
89
91
}
90
92
91
- cpuRequest , hasCpuRequest := container . Resources . Requests [core .ResourceCPU ]
93
+ cpuRequest , hasCpuRequest := containerRequests [core .ResourceCPU ]
92
94
if _ , ok := resources [i ].Requests [core .ResourceCPU ]; ! ok && hasCpuRequest {
93
95
resources [i ].Requests [core .ResourceCPU ] = cpuRequest
94
96
}
95
- memRequest , hasMemRequest := container . Resources . Requests [core .ResourceMemory ]
97
+ memRequest , hasMemRequest := containerRequests [core .ResourceMemory ]
96
98
if _ , ok := resources [i ].Requests [core .ResourceMemory ]; ! ok && hasMemRequest {
97
99
resources [i ].Requests [core .ResourceMemory ] = memRequest
98
100
}
99
- cpuLimit , hasCpuLimit := container . Resources . Limits [core .ResourceCPU ]
101
+ cpuLimit , hasCpuLimit := containerLimits [core .ResourceCPU ]
100
102
if _ , ok := resources [i ].Limits [core .ResourceCPU ]; ! ok && hasCpuLimit {
101
103
resources [i ].Limits [core .ResourceCPU ] = cpuLimit
102
104
}
103
- memLimit , hasMemLimit := container . Resources . Limits [core .ResourceMemory ]
105
+ memLimit , hasMemLimit := containerLimits [core .ResourceMemory ]
104
106
if _ , ok := resources [i ].Limits [core .ResourceMemory ]; ! ok && hasMemLimit {
105
107
resources [i ].Limits [core .ResourceMemory ] = memLimit
106
108
}
0 commit comments