From 761e079ed1bf3e358683b9105af9dd8c8dccd32e Mon Sep 17 00:00:00 2001 From: Deyuan Deng Date: Thu, 8 Jun 2017 21:23:47 +0800 Subject: [PATCH 1/2] Fix local isolation for pod requesting only overlay --- .../pkg/scheduler/algorithm/predicates/predicates.go | 2 +- .../algorithm/predicates/predicates_test.go | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates.go b/plugin/pkg/scheduler/algorithm/predicates/predicates.go index 95939bf5043..757ec892570 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates.go @@ -584,7 +584,7 @@ func PodFitsResources(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.No // We couldn't parse metadata - fallback to computing it. podRequest = GetResourceRequest(pod) } - if podRequest.MilliCPU == 0 && podRequest.Memory == 0 && podRequest.NvidiaGPU == 0 && len(podRequest.OpaqueIntResources) == 0 { + if podRequest.MilliCPU == 0 && podRequest.Memory == 0 && podRequest.NvidiaGPU == 0 && podRequest.StorageOverlay == 0 && len(podRequest.OpaqueIntResources) == 0 { return len(predicateFails) == 0, predicateFails, nil } diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go index a410641e197..ff893bda469 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go @@ -435,7 +435,7 @@ func TestPodFitsResources(t *testing.T) { nodeInfo: schedulercache.NewNodeInfo( newResourcePod(schedulercache.Resource{MilliCPU: 10, Memory: 10, StorageOverlay: 20})), fits: false, - test: "due to init container scratch disk", + test: "due to container scratch disk", reasons: []algorithm.PredicateFailureReason{ NewInsufficientResourceError(v1.ResourceCPU, 1, 10, 10), NewInsufficientResourceError(v1.ResourceStorageScratch, 1, 20, 20), @@ -458,6 +458,16 @@ func TestPodFitsResources(t *testing.T) { NewInsufficientResourceError(v1.ResourceStorageScratch, 18, 5, 20), }, }, + { + pod: newResourcePod(schedulercache.Resource{StorageOverlay: 18}), + nodeInfo: schedulercache.NewNodeInfo( + newResourcePod(schedulercache.Resource{MilliCPU: 2, Memory: 2, StorageOverlay: 5})), + fits: false, + test: "request exceeds allocatable", + reasons: []algorithm.PredicateFailureReason{ + NewInsufficientResourceError(v1.ResourceStorageScratch, 18, 5, 20), + }, + }, { pod: newResourcePod(schedulercache.Resource{MilliCPU: 1, Memory: 1, StorageOverlay: 10}), emptyDirLimit: 15, From 3cecb070ca9da60b1cd006682ab1c8e6584d4361 Mon Sep 17 00:00:00 2001 From: Deyuan Deng Date: Fri, 9 Jun 2017 12:32:36 +0800 Subject: [PATCH 2/2] Fix local isolation for pod requesting only scratch --- .../algorithm/predicates/predicates.go | 2 +- .../algorithm/predicates/predicates_test.go | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates.go b/plugin/pkg/scheduler/algorithm/predicates/predicates.go index 757ec892570..ab97efadb13 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates.go @@ -584,7 +584,7 @@ func PodFitsResources(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.No // We couldn't parse metadata - fallback to computing it. podRequest = GetResourceRequest(pod) } - if podRequest.MilliCPU == 0 && podRequest.Memory == 0 && podRequest.NvidiaGPU == 0 && podRequest.StorageOverlay == 0 && len(podRequest.OpaqueIntResources) == 0 { + if podRequest.MilliCPU == 0 && podRequest.Memory == 0 && podRequest.NvidiaGPU == 0 && podRequest.StorageOverlay == 0 && podRequest.StorageScratch == 0 && len(podRequest.OpaqueIntResources) == 0 { return len(predicateFails) == 0, predicateFails, nil } diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go index ff893bda469..b0f8dbfa2e3 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates_test.go @@ -453,7 +453,7 @@ func TestPodFitsResources(t *testing.T) { nodeInfo: schedulercache.NewNodeInfo( newResourcePod(schedulercache.Resource{MilliCPU: 2, Memory: 2, StorageOverlay: 5})), fits: false, - test: "request exceeds allocatable", + test: "request exceeds allocatable overlay storage resource", reasons: []algorithm.PredicateFailureReason{ NewInsufficientResourceError(v1.ResourceStorageScratch, 18, 5, 20), }, @@ -463,7 +463,7 @@ func TestPodFitsResources(t *testing.T) { nodeInfo: schedulercache.NewNodeInfo( newResourcePod(schedulercache.Resource{MilliCPU: 2, Memory: 2, StorageOverlay: 5})), fits: false, - test: "request exceeds allocatable", + test: "request exceeds allocatable overlay storage resource", reasons: []algorithm.PredicateFailureReason{ NewInsufficientResourceError(v1.ResourceStorageScratch, 18, 5, 20), }, @@ -480,6 +480,18 @@ func TestPodFitsResources(t *testing.T) { NewInsufficientResourceError(v1.ResourceStorageScratch, 25, 5, 20), }, }, + { + pod: newResourcePod(schedulercache.Resource{}), + emptyDirLimit: 25, + storageMedium: v1.StorageMediumDefault, + nodeInfo: schedulercache.NewNodeInfo( + newResourcePod(schedulercache.Resource{MilliCPU: 2, Memory: 2, StorageOverlay: 5})), + fits: false, + test: "storage scratchrequest exceeds allocatable", + reasons: []algorithm.PredicateFailureReason{ + NewInsufficientResourceError(v1.ResourceStorageScratch, 25, 5, 20), + }, + }, { pod: newResourcePod(schedulercache.Resource{MilliCPU: 1, Memory: 1, StorageOverlay: 10}), emptyDirLimit: 15, @@ -487,10 +499,7 @@ func TestPodFitsResources(t *testing.T) { nodeInfo: schedulercache.NewNodeInfo( newResourcePod(schedulercache.Resource{MilliCPU: 2, Memory: 2, StorageOverlay: 5})), fits: true, - test: "storage scratchrequest exceeds allocatable", - reasons: []algorithm.PredicateFailureReason{ - NewInsufficientResourceError(v1.ResourceStorageScratch, 25, 5, 20), - }, + test: "pod fit with memory medium", }, }