diff --git a/pkg/controllers/status/cluster_status_controller.go b/pkg/controllers/status/cluster_status_controller.go index 2c7e8ce26..d77b82d2e 100644 --- a/pkg/controllers/status/cluster_status_controller.go +++ b/pkg/controllers/status/cluster_status_controller.go @@ -510,7 +510,7 @@ func getAllocatingResource(podList []*corev1.Pod) corev1.ResourceList { allocating := util.EmptyResource() for _, pod := range podList { if len(pod.Spec.NodeName) == 0 { - allocating.AddPodRequest(pod) + allocating.AddPodRequest(&pod.Spec) } } @@ -522,7 +522,7 @@ func getAllocatedResource(podList []*corev1.Pod) corev1.ResourceList { for _, pod := range podList { // When the phase of a pod is Succeeded or Failed, kube-scheduler would not consider its resource occupation. if len(pod.Spec.NodeName) != 0 && pod.Status.Phase != corev1.PodSucceeded && pod.Status.Phase != corev1.PodFailed { - allocated.AddPodRequest(pod) + allocated.AddPodRequest(&pod.Spec) } } diff --git a/pkg/util/detector/detector.go b/pkg/util/detector/detector.go index f42fa99fb..b144d8a58 100644 --- a/pkg/util/detector/detector.go +++ b/pkg/util/detector/detector.go @@ -672,22 +672,11 @@ func (d *ResourceDetector) getReplicaResourceRequirements(object map[string]inte if err != nil { return nil, err } - resPtr := d.calculateResource(&podTemplateSpec.Spec) - replicaResourceRequirements := resPtr.ResourceList() + res := util.EmptyResource().AddPodRequest(&podTemplateSpec.Spec) + replicaResourceRequirements := res.ResourceList() return replicaResourceRequirements, nil } -func (d *ResourceDetector) calculateResource(podSpec *corev1.PodSpec) (res util.Resource) { - resPtr := &res - for _, c := range podSpec.Containers { - resPtr.Add(c.Resources.Requests) - } - for _, c := range podSpec.InitContainers { - resPtr.SetMaxResource(c.Resources.Requests) - } - return -} - // AddWaiting adds object's key to waiting list. func (d *ResourceDetector) AddWaiting(objectKey keys.ClusterWideKey) { d.waitingLock.Lock() diff --git a/pkg/util/resource.go b/pkg/util/resource.go index 17acddcb6..e5b7f0d69 100644 --- a/pkg/util/resource.go +++ b/pkg/util/resource.go @@ -102,11 +102,12 @@ func (r *Resource) ResourceList() corev1.ResourceList { // - the sum of all app containers(spec.Containers) request for a resource. // - the effective init containers(spec.InitContainers) request for a resource. // The effective init containers request is the highest request on all init containers. -func (r *Resource) AddPodRequest(pod *corev1.Pod) { - for _, container := range pod.Spec.Containers { +func (r *Resource) AddPodRequest(podSpec *corev1.PodSpec) *Resource { + for _, container := range podSpec.Containers { r.Add(container.Resources.Requests) } - for _, container := range pod.Spec.InitContainers { + for _, container := range podSpec.InitContainers { r.SetMaxResource(container.Resources.Requests) } + return r }