diff --git a/pkg/scheduler/framework/plugins/noderesources/fit.go b/pkg/scheduler/framework/plugins/noderesources/fit.go index 7fea684e42d..ff62eff0041 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit.go @@ -300,6 +300,11 @@ func fitsRequest(podRequest *preFilterState, nodeInfo *framework.NodeInfo, ignor } for rName, rQuant := range podRequest.ScalarResources { + // Skip in case request quantity is zero + if rQuant == 0 { + continue + } + if v1helper.IsExtendedResourceName(rName) { // If this resource is one of the extended resources that should be ignored, we will skip checking it. // rName is guaranteed to have a slash due to API validation. @@ -311,6 +316,7 @@ func fitsRequest(podRequest *preFilterState, nodeInfo *framework.NodeInfo, ignor continue } } + if rQuant > (nodeInfo.Allocatable.ScalarResources[rName] - nodeInfo.Requested.ScalarResources[rName]) { insufficientResources = append(insufficientResources, InsufficientResource{ ResourceName: rName, diff --git a/pkg/scheduler/framework/plugins/noderesources/fit_test.go b/pkg/scheduler/framework/plugins/noderesources/fit_test.go index 08188da4998..a2a93d87d98 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit_test.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit_test.go @@ -458,6 +458,19 @@ func TestEnoughRequests(t *testing.T) { }, }, }, + { + pod: newResourcePod( + framework.Resource{ + MilliCPU: 1, + Memory: 1, + ScalarResources: map[v1.ResourceName]int64{ + extendedResourceA: 0, + }}), + nodeInfo: framework.NewNodeInfo(newResourcePod(framework.Resource{ + MilliCPU: 0, Memory: 0, ScalarResources: map[v1.ResourceName]int64{extendedResourceA: 6}})), + name: "skip checking extended resource request with quantity zero via resource groups", + wantInsufficientResources: []InsufficientResource{}, + }, } for _, test := range enoughPodsTests {