From b5094dd8771fe1948ba1c7b606131c7e9a82ed67 Mon Sep 17 00:00:00 2001 From: Klaus Ma Date: Thu, 17 Aug 2017 14:28:08 +0800 Subject: [PATCH] Ignored node condition predicates if TaintsByCondition enabled. --- .../algorithmprovider/defaults/BUILD | 2 ++ .../algorithmprovider/defaults/defaults.go | 23 +++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD b/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD index f0bb6ef2301..e5fdf33f0ac 100644 --- a/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD +++ b/plugin/pkg/scheduler/algorithmprovider/defaults/BUILD @@ -11,6 +11,7 @@ go_library( srcs = ["defaults.go"], deps = [ "//pkg/cloudprovider/providers/aws:go_default_library", + "//pkg/features:go_default_library", "//plugin/pkg/scheduler/algorithm:go_default_library", "//plugin/pkg/scheduler/algorithm/predicates:go_default_library", "//plugin/pkg/scheduler/algorithm/priorities:go_default_library", @@ -18,6 +19,7 @@ go_library( "//plugin/pkg/scheduler/factory:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", + "//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library", ], ) diff --git a/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go b/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go index 2d7e278a921..cb868fa543d 100644 --- a/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go +++ b/plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go @@ -21,7 +21,9 @@ import ( "strconv" "k8s.io/apimachinery/pkg/util/sets" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/cloudprovider/providers/aws" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm" "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates" "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities" @@ -116,7 +118,7 @@ func init() { } func defaultPredicates() sets.String { - return sets.NewString( + predSet := sets.NewString( // Fit is determined by volume zone requirements. factory.RegisterFitPredicateFactory( "NoVolumeZoneConflict", @@ -166,18 +168,12 @@ func defaultPredicates() sets.String { // (e.g. kubelet and all schedulers) factory.RegisterFitPredicate("GeneralPredicates", predicates.GeneralPredicates), - // Fit is determined based on whether a pod can tolerate all of the node's taints - factory.RegisterFitPredicate("PodToleratesNodeTaints", predicates.PodToleratesNodeTaints), - // Fit is determined by node memory pressure condition. factory.RegisterFitPredicate("CheckNodeMemoryPressure", predicates.CheckNodeMemoryPressurePredicate), // Fit is determined by node disk pressure condition. factory.RegisterFitPredicate("CheckNodeDiskPressure", predicates.CheckNodeDiskPressurePredicate), - // Fit is determied by node condtions: not ready, network unavailable and out of disk. - factory.RegisterMandatoryFitPredicate("CheckNodeCondition", predicates.CheckNodeConditionPredicate), - // Fit is determined by volume zone requirements. factory.RegisterFitPredicateFactory( "NoVolumeNodeConflict", @@ -186,6 +182,19 @@ func defaultPredicates() sets.String { }, ), ) + + if utilfeature.DefaultFeatureGate.Enabled(features.TaintNodesByCondition) { + // Fit is determined based on whether a pod can tolerate all of the node's taints + predSet.Insert(factory.RegisterMandatoryFitPredicate("PodToleratesNodeTaints", predicates.PodToleratesNodeTaints)) + glog.Warningf("TaintNodesByCondition is enabled, PodToleratesNodeTaints predicate is mandatory") + } else { + // Fit is determied by node condtions: not ready, network unavailable and out of disk. + predSet.Insert(factory.RegisterMandatoryFitPredicate("CheckNodeCondition", predicates.CheckNodeConditionPredicate)) + // Fit is determined based on whether a pod can tolerate all of the node's taints + predSet.Insert(factory.RegisterFitPredicate("PodToleratesNodeTaints", predicates.PodToleratesNodeTaints)) + } + + return predSet } func defaultPriorities() sets.String {