From bbf2b968c895f82b9d4bb8f2468e6a9450b61996 Mon Sep 17 00:00:00 2001 From: forrestchen Date: Thu, 9 Mar 2023 17:05:11 +0800 Subject: [PATCH] skip pod resource check when request is zero Signed-off-by: forrestchen --- pkg/scheduler/framework/plugins/noderesources/fit.go | 7 ++++--- .../framework/plugins/noderesources/fit_test.go | 11 +++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/scheduler/framework/plugins/noderesources/fit.go b/pkg/scheduler/framework/plugins/noderesources/fit.go index 55e7b9c49a3..4b6825c2930 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit.go @@ -276,7 +276,7 @@ func fitsRequest(podRequest *preFilterState, nodeInfo *framework.NodeInfo, ignor return insufficientResources } - if podRequest.MilliCPU > (nodeInfo.Allocatable.MilliCPU - nodeInfo.Requested.MilliCPU) { + if podRequest.MilliCPU > 0 && podRequest.MilliCPU > (nodeInfo.Allocatable.MilliCPU-nodeInfo.Requested.MilliCPU) { insufficientResources = append(insufficientResources, InsufficientResource{ ResourceName: v1.ResourceCPU, Reason: "Insufficient cpu", @@ -285,7 +285,7 @@ func fitsRequest(podRequest *preFilterState, nodeInfo *framework.NodeInfo, ignor Capacity: nodeInfo.Allocatable.MilliCPU, }) } - if podRequest.Memory > (nodeInfo.Allocatable.Memory - nodeInfo.Requested.Memory) { + if podRequest.Memory > 0 && podRequest.Memory > (nodeInfo.Allocatable.Memory-nodeInfo.Requested.Memory) { insufficientResources = append(insufficientResources, InsufficientResource{ ResourceName: v1.ResourceMemory, Reason: "Insufficient memory", @@ -294,7 +294,8 @@ func fitsRequest(podRequest *preFilterState, nodeInfo *framework.NodeInfo, ignor Capacity: nodeInfo.Allocatable.Memory, }) } - if podRequest.EphemeralStorage > (nodeInfo.Allocatable.EphemeralStorage - nodeInfo.Requested.EphemeralStorage) { + if podRequest.EphemeralStorage > 0 && + podRequest.EphemeralStorage > (nodeInfo.Allocatable.EphemeralStorage-nodeInfo.Requested.EphemeralStorage) { insufficientResources = append(insufficientResources, InsufficientResource{ ResourceName: v1.ResourceEphemeralStorage, Reason: "Insufficient ephemeral-storage", diff --git a/pkg/scheduler/framework/plugins/noderesources/fit_test.go b/pkg/scheduler/framework/plugins/noderesources/fit_test.go index 819e1bfe07d..e2b3c2497b6 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit_test.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit_test.go @@ -473,6 +473,17 @@ func TestEnoughRequests(t *testing.T) { name: "skip checking extended resource request with quantity zero via resource groups", wantInsufficientResources: []InsufficientResource{}, }, + { + pod: newResourcePod( + framework.Resource{ + ScalarResources: map[v1.ResourceName]int64{ + extendedResourceA: 1, + }}), + nodeInfo: framework.NewNodeInfo(newResourcePod(framework.Resource{ + MilliCPU: 20, Memory: 30, ScalarResources: map[v1.ResourceName]int64{extendedResourceA: 1}})), + name: "skip checking resource request with quantity zero", + wantInsufficientResources: []InsufficientResource{}, + }, } for _, test := range enoughPodsTests {