Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
89d6ec4b
Commit
89d6ec4b
authored
Oct 05, 2018
by
Darren Shepherd
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove EnableEquivalenceClassCache
parent
63d8d89d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
4 additions
and
122 deletions
+4
-122
server.go
cmd/kube-scheduler/app/server.go
+0
-2
kube_features.go
pkg/features/kube_features.go
+0
-7
BUILD
pkg/scheduler/core/equivalence/BUILD
+0
-49
eqivalence.go
pkg/scheduler/core/equivalence/eqivalence.go
+0
-0
eqivalence_test.go
pkg/scheduler/core/equivalence/eqivalence_test.go
+0
-0
generic_scheduler.go
pkg/scheduler/core/generic_scheduler.go
+4
-40
factory.go
pkg/scheduler/factory/factory.go
+0
-0
scheduler.go
pkg/scheduler/scheduler.go
+0
-24
No files found.
cmd/kube-scheduler/app/server.go
View file @
89d6ec4b
...
...
@@ -187,7 +187,6 @@ func Run(cc schedulerserverconfig.CompletedConfig, stopCh <-chan struct{}) error
stopCh
,
scheduler
.
WithName
(
cc
.
ComponentConfig
.
SchedulerName
),
scheduler
.
WithHardPodAffinitySymmetricWeight
(
cc
.
ComponentConfig
.
HardPodAffinitySymmetricWeight
),
scheduler
.
WithEquivalenceClassCacheEnabled
(
cc
.
ComponentConfig
.
EnableContentionProfiling
),
scheduler
.
WithPreemptionDisabled
(
cc
.
ComponentConfig
.
DisablePreemption
),
scheduler
.
WithPercentageOfNodesToScore
(
cc
.
ComponentConfig
.
PercentageOfNodesToScore
),
scheduler
.
WithBindTimeoutSeconds
(
*
cc
.
ComponentConfig
.
BindTimeoutSeconds
))
...
...
@@ -356,7 +355,6 @@ func NewSchedulerConfig(s schedulerserverconfig.CompletedConfig) (*factory.Confi
PdbInformer
:
s
.
InformerFactory
.
Policy
()
.
V1beta1
()
.
PodDisruptionBudgets
(),
StorageClassInformer
:
storageClassInformer
,
HardPodAffinitySymmetricWeight
:
s
.
ComponentConfig
.
HardPodAffinitySymmetricWeight
,
EnableEquivalenceClassCache
:
utilfeature
.
DefaultFeatureGate
.
Enabled
(
features
.
EnableEquivalenceClassCache
),
DisablePreemption
:
s
.
ComponentConfig
.
DisablePreemption
,
PercentageOfNodesToScore
:
s
.
ComponentConfig
.
PercentageOfNodesToScore
,
BindTimeoutSeconds
:
*
s
.
ComponentConfig
.
BindTimeoutSeconds
,
...
...
pkg/features/kube_features.go
View file @
89d6ec4b
...
...
@@ -109,12 +109,6 @@ const (
// Add priority to pods. Priority affects scheduling and preemption of pods.
PodPriority
utilfeature
.
Feature
=
"PodPriority"
// owner: @resouer
// alpha: v1.8
//
// Enable equivalence class cache for scheduler.
EnableEquivalenceClassCache
utilfeature
.
Feature
=
"EnableEquivalenceClassCache"
// owner: @k82cn
// beta: v1.12
//
...
...
@@ -394,7 +388,6 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
Sysctls
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
Beta
},
PodShareProcessNamespace
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
Beta
},
PodPriority
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
Beta
},
EnableEquivalenceClassCache
:
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
TaintNodesByCondition
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
Beta
},
MountPropagation
:
{
Default
:
true
,
PreRelease
:
utilfeature
.
GA
},
QOSReserved
:
{
Default
:
false
,
PreRelease
:
utilfeature
.
Alpha
},
...
...
pkg/scheduler/core/equivalence/BUILD
deleted
100644 → 0
View file @
63d8d89d
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = ["eqivalence.go"],
importpath = "k8s.io/kubernetes/pkg/scheduler/core/equivalence",
visibility = ["//visibility:public"],
deps = [
"//pkg/features:go_default_library",
"//pkg/scheduler/algorithm:go_default_library",
"//pkg/scheduler/algorithm/predicates:go_default_library",
"//pkg/scheduler/cache:go_default_library",
"//pkg/scheduler/metrics:go_default_library",
"//pkg/util/hash:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/k8s.io/klog:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["eqivalence_test.go"],
embed = [":go_default_library"],
deps = [
"//pkg/scheduler/algorithm:go_default_library",
"//pkg/scheduler/algorithm/predicates:go_default_library",
"//pkg/scheduler/cache:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
pkg/scheduler/core/equivalence/eqivalence.go
deleted
100644 → 0
View file @
63d8d89d
This diff is collapsed.
Click to expand it.
pkg/scheduler/core/equivalence/eqivalence_test.go
deleted
100644 → 0
View file @
63d8d89d
This diff is collapsed.
Click to expand it.
pkg/scheduler/core/generic_scheduler.go
View file @
89d6ec4b
...
...
@@ -40,7 +40,6 @@ import (
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
schedulerapi
"k8s.io/kubernetes/pkg/scheduler/api"
schedulercache
"k8s.io/kubernetes/pkg/scheduler/cache"
"k8s.io/kubernetes/pkg/scheduler/core/equivalence"
schedulerinternalcache
"k8s.io/kubernetes/pkg/scheduler/internal/cache"
internalqueue
"k8s.io/kubernetes/pkg/scheduler/internal/queue"
"k8s.io/kubernetes/pkg/scheduler/metrics"
...
...
@@ -97,7 +96,6 @@ func (f *FitError) Error() string {
type
genericScheduler
struct
{
cache
schedulerinternalcache
.
Cache
equivalenceCache
*
equivalence
.
Cache
schedulingQueue
internalqueue
.
SchedulingQueue
predicates
map
[
string
]
algorithm
.
FitPredicate
priorityMetaProducer
algorithm
.
PriorityMetadataProducer
...
...
@@ -117,18 +115,6 @@ type genericScheduler struct {
// snapshot snapshots equivalane cache and node infos for all fit and priority
// functions.
func
(
g
*
genericScheduler
)
snapshot
()
error
{
// IMPORTANT NOTE: We must snapshot equivalence cache before snapshotting
// scheduler cache, otherwise stale data may be written into equivalence
// cache, e.g.
// 1. snapshot cache
// 2. event arrives, updating cache and invalidating predicates or whole node cache
// 3. snapshot ecache
// 4. evaludate predicates
// 5. stale result will be written to ecache
if
g
.
equivalenceCache
!=
nil
{
g
.
equivalenceCache
.
Snapshot
()
}
// Used for all fit and priority funcs.
return
g
.
cache
.
UpdateNodeNameToInfoMap
(
g
.
cachedNodeInfoMap
)
}
...
...
@@ -400,7 +386,6 @@ func (g *genericScheduler) findNodesThatFit(pod *v1.Pod, nodes []*v1.Node) ([]*v
var
(
predicateResultLock
sync
.
Mutex
filteredLen
int32
equivClass
*
equivalence
.
Class
)
ctx
,
cancel
:=
context
.
WithCancel
(
context
.
Background
())
...
...
@@ -408,26 +393,15 @@ func (g *genericScheduler) findNodesThatFit(pod *v1.Pod, nodes []*v1.Node) ([]*v
// We can use the same metadata producer for all nodes.
meta
:=
g
.
predicateMetaProducer
(
pod
,
g
.
cachedNodeInfoMap
)
if
g
.
equivalenceCache
!=
nil
{
// getEquivalenceClassInfo will return immediately if no equivalence pod found
equivClass
=
equivalence
.
NewClass
(
pod
)
}
checkNode
:=
func
(
i
int
)
{
var
nodeCache
*
equivalence
.
NodeCache
nodeName
:=
g
.
cache
.
NodeTree
()
.
Next
()
if
g
.
equivalenceCache
!=
nil
{
nodeCache
=
g
.
equivalenceCache
.
LoadNodeCache
(
nodeName
)
}
fits
,
failedPredicates
,
err
:=
podFitsOnNode
(
pod
,
meta
,
g
.
cachedNodeInfoMap
[
nodeName
],
g
.
predicates
,
nodeCache
,
g
.
schedulingQueue
,
g
.
alwaysCheckAllPredicates
,
equivClass
,
)
if
err
!=
nil
{
predicateResultLock
.
Lock
()
...
...
@@ -536,13 +510,10 @@ func podFitsOnNode(
meta
algorithm
.
PredicateMetadata
,
info
*
schedulercache
.
NodeInfo
,
predicateFuncs
map
[
string
]
algorithm
.
FitPredicate
,
nodeCache
*
equivalence
.
NodeCache
,
queue
internalqueue
.
SchedulingQueue
,
alwaysCheckAllPredicates
bool
,
equivClass
*
equivalence
.
Class
,
)
(
bool
,
[]
algorithm
.
PredicateFailureReason
,
error
)
{
var
(
eCacheAvailable
bool
failedPredicates
[]
algorithm
.
PredicateFailureReason
)
...
...
@@ -576,8 +547,7 @@ func podFitsOnNode(
// Bypass eCache if node has any nominated pods.
// TODO(bsalamat): consider using eCache and adding proper eCache invalidations
// when pods are nominated or their nominations change.
eCacheAvailable
=
equivClass
!=
nil
&&
nodeCache
!=
nil
&&
!
podsAdded
for
predicateID
,
predicateKey
:=
range
predicates
.
Ordering
()
{
for
_
,
predicateKey
:=
range
predicates
.
Ordering
()
{
var
(
fit
bool
reasons
[]
algorithm
.
PredicateFailureReason
...
...
@@ -585,11 +555,7 @@ func podFitsOnNode(
)
//TODO (yastij) : compute average predicate restrictiveness to export it as Prometheus metric
if
predicate
,
exist
:=
predicateFuncs
[
predicateKey
];
exist
{
if
eCacheAvailable
{
fit
,
reasons
,
err
=
nodeCache
.
RunPredicate
(
predicate
,
predicateKey
,
predicateID
,
pod
,
metaToUse
,
nodeInfoToUse
,
equivClass
)
}
else
{
fit
,
reasons
,
err
=
predicate
(
pod
,
metaToUse
,
nodeInfoToUse
)
}
fit
,
reasons
,
err
=
predicate
(
pod
,
metaToUse
,
nodeInfoToUse
)
if
err
!=
nil
{
return
false
,
[]
algorithm
.
PredicateFailureReason
{},
err
}
...
...
@@ -1018,7 +984,7 @@ func selectVictimsOnNode(
// that we should check is if the "pod" is failing to schedule due to pod affinity
// failure.
// TODO(bsalamat): Consider checking affinity to lower priority pods if feasible with reasonable performance.
if
fits
,
_
,
err
:=
podFitsOnNode
(
pod
,
meta
,
nodeInfoCopy
,
fitPredicates
,
nil
,
queue
,
false
,
nil
);
!
fits
{
if
fits
,
_
,
err
:=
podFitsOnNode
(
pod
,
meta
,
nodeInfoCopy
,
fitPredicates
,
queue
,
false
);
!
fits
{
if
err
!=
nil
{
klog
.
Warningf
(
"Encountered error while selecting victims on node %v: %v"
,
nodeInfo
.
Node
()
.
Name
,
err
)
}
...
...
@@ -1032,7 +998,7 @@ func selectVictimsOnNode(
violatingVictims
,
nonViolatingVictims
:=
filterPodsWithPDBViolation
(
potentialVictims
.
Items
,
pdbs
)
reprievePod
:=
func
(
p
*
v1
.
Pod
)
bool
{
addPod
(
p
)
fits
,
_
,
_
:=
podFitsOnNode
(
pod
,
meta
,
nodeInfoCopy
,
fitPredicates
,
nil
,
queue
,
false
,
nil
)
fits
,
_
,
_
:=
podFitsOnNode
(
pod
,
meta
,
nodeInfoCopy
,
fitPredicates
,
queue
,
false
)
if
!
fits
{
removePod
(
p
)
victims
=
append
(
victims
,
p
)
...
...
@@ -1148,7 +1114,6 @@ func podPassesBasicChecks(pod *v1.Pod, pvcLister corelisters.PersistentVolumeCla
// NewGenericScheduler creates a genericScheduler object.
func
NewGenericScheduler
(
cache
schedulerinternalcache
.
Cache
,
eCache
*
equivalence
.
Cache
,
podQueue
internalqueue
.
SchedulingQueue
,
predicates
map
[
string
]
algorithm
.
FitPredicate
,
predicateMetaProducer
algorithm
.
PredicateMetadataProducer
,
...
...
@@ -1164,7 +1129,6 @@ func NewGenericScheduler(
)
algorithm
.
ScheduleAlgorithm
{
return
&
genericScheduler
{
cache
:
cache
,
equivalenceCache
:
eCache
,
schedulingQueue
:
podQueue
,
predicates
:
predicates
,
predicateMetaProducer
:
predicateMetaProducer
,
...
...
pkg/scheduler/factory/factory.go
View file @
89d6ec4b
This diff is collapsed.
Click to expand it.
pkg/scheduler/scheduler.go
View file @
89d6ec4b
...
...
@@ -25,7 +25,6 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/wait"
utilfeature
"k8s.io/apiserver/pkg/util/feature"
appsinformers
"k8s.io/client-go/informers/apps/v1"
...
...
@@ -35,7 +34,6 @@ import (
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/record"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/scheduler/algorithm/predicates"
schedulerapi
"k8s.io/kubernetes/pkg/scheduler/api"
latestschedulerapi
"k8s.io/kubernetes/pkg/scheduler/api/latest"
kubeschedulerconfig
"k8s.io/kubernetes/pkg/scheduler/apis/config"
...
...
@@ -67,7 +65,6 @@ func (sched *Scheduler) Cache() schedulerinternalcache.Cache {
type
schedulerOptions
struct
{
schedulerName
string
hardPodAffinitySymmetricWeight
int32
enableEquivalenceClassCache
bool
disablePreemption
bool
percentageOfNodesToScore
int32
bindTimeoutSeconds
int64
...
...
@@ -90,13 +87,6 @@ func WithHardPodAffinitySymmetricWeight(hardPodAffinitySymmetricWeight int32) Op
}
}
// WithEquivalenceClassCacheEnabled sets enableEquivalenceClassCache for Scheduler, the default value is false
func
WithEquivalenceClassCacheEnabled
(
enableEquivalenceClassCache
bool
)
Option
{
return
func
(
o
*
schedulerOptions
)
{
o
.
enableEquivalenceClassCache
=
enableEquivalenceClassCache
}
}
// WithPreemptionDisabled sets disablePreemption for Scheduler, the default value is false
func
WithPreemptionDisabled
(
disablePreemption
bool
)
Option
{
return
func
(
o
*
schedulerOptions
)
{
...
...
@@ -121,7 +111,6 @@ func WithBindTimeoutSeconds(bindTimeoutSeconds int64) Option {
var
defaultSchedulerOptions
=
schedulerOptions
{
schedulerName
:
v1
.
DefaultSchedulerName
,
hardPodAffinitySymmetricWeight
:
v1
.
DefaultHardPodAffinitySymmetricWeight
,
enableEquivalenceClassCache
:
false
,
disablePreemption
:
false
,
percentageOfNodesToScore
:
schedulerapi
.
DefaultPercentageOfNodesToScore
,
bindTimeoutSeconds
:
BindTimeoutSeconds
,
...
...
@@ -164,7 +153,6 @@ func New(client clientset.Interface,
PdbInformer
:
pdbInformer
,
StorageClassInformer
:
storageClassInformer
,
HardPodAffinitySymmetricWeight
:
options
.
hardPodAffinitySymmetricWeight
,
EnableEquivalenceClassCache
:
options
.
enableEquivalenceClassCache
,
DisablePreemption
:
options
.
disablePreemption
,
PercentageOfNodesToScore
:
options
.
percentageOfNodesToScore
,
BindTimeoutSeconds
:
options
.
bindTimeoutSeconds
,
...
...
@@ -379,12 +367,6 @@ func (sched *Scheduler) assumeVolumes(assumed *v1.Pod, host string) (allBound bo
Message
:
err
.
Error
(),
})
}
// Invalidate ecache because assumed volumes could have affected the cached
// pvs for other pods
if
sched
.
config
.
Ecache
!=
nil
{
invalidPredicates
:=
sets
.
NewString
(
predicates
.
CheckVolumeBindingPred
)
sched
.
config
.
Ecache
.
InvalidatePredicates
(
invalidPredicates
)
}
}
return
}
...
...
@@ -464,12 +446,6 @@ func (sched *Scheduler) assume(assumed *v1.Pod, host string) error {
sched
.
config
.
SchedulingQueue
.
DeleteNominatedPodIfExists
(
assumed
)
}
// Optimistically assume that the binding will succeed, so we need to invalidate affected
// predicates in equivalence cache.
// If the binding fails, these invalidated item will not break anything.
if
sched
.
config
.
Ecache
!=
nil
{
sched
.
config
.
Ecache
.
InvalidateCachedPredicateItemForPodAdd
(
assumed
,
host
)
}
return
nil
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment