From 27824fb06a568efd4baf7e6d37acdd55f23c0d18 Mon Sep 17 00:00:00 2001 From: jlsong01 Date: Fri, 29 Jul 2022 23:23:25 +0800 Subject: [PATCH] fix pod created failed when resource request is 0 --- .../framework/plugins/noderesources/fit.go | 6 ++++++ .../framework/plugins/noderesources/fit_test.go | 13 +++++++++++++ 2 files changed, 19 insertions(+) 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 e2d6f15fdc3..6fc62d4170f 100644 --- a/pkg/scheduler/framework/plugins/noderesources/fit_test.go +++ b/pkg/scheduler/framework/plugins/noderesources/fit_test.go @@ -462,6 +462,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 {