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
bed435de
Commit
bed435de
authored
Nov 02, 2017
by
Gavin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
compute pod selectors in priority meta data producer
parent
4aa92bac
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
125 additions
and
34 deletions
+125
-34
balanced_resource_allocation_test.go
...algorithm/priorities/balanced_resource_allocation_test.go
+1
-1
image_locality_test.go
...pkg/scheduler/algorithm/priorities/image_locality_test.go
+1
-1
least_requested_test.go
...kg/scheduler/algorithm/priorities/least_requested_test.go
+1
-1
metadata.go
plugin/pkg/scheduler/algorithm/priorities/metadata.go
+54
-1
metadata_test.go
plugin/pkg/scheduler/algorithm/priorities/metadata_test.go
+9
-1
most_requested_test.go
...pkg/scheduler/algorithm/priorities/most_requested_test.go
+1
-1
node_affinity_test.go
.../pkg/scheduler/algorithm/priorities/node_affinity_test.go
+1
-1
node_label_test.go
plugin/pkg/scheduler/algorithm/priorities/node_label_test.go
+5
-1
node_prefer_avoid_pods_test.go
...duler/algorithm/priorities/node_prefer_avoid_pods_test.go
+1
-1
selector_spreading_test.go
...scheduler/algorithm/priorities/selector_spreading_test.go
+26
-8
taint_toleration_test.go
...g/scheduler/algorithm/priorities/taint_toleration_test.go
+1
-1
test_util.go
plugin/pkg/scheduler/algorithm/priorities/test_util.go
+3
-3
defaults.go
plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go
+4
-4
generic_scheduler_test.go
plugin/pkg/scheduler/core/generic_scheduler_test.go
+17
-9
No files found.
plugin/pkg/scheduler/algorithm/priorities/balanced_resource_allocation_test.go
View file @
bed435de
...
...
@@ -253,7 +253,7 @@ func TestBalancedResourceAllocation(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
BalancedResourceAllocationMap
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
BalancedResourceAllocationMap
,
nil
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/image_locality_test.go
View file @
bed435de
...
...
@@ -161,7 +161,7 @@ func TestImageLocalityPriority(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
ImageLocalityPriorityMap
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
ImageLocalityPriorityMap
,
nil
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/least_requested_test.go
View file @
bed435de
...
...
@@ -253,7 +253,7 @@ func TestLeastRequested(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
LeastRequestedPriorityMap
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
LeastRequestedPriorityMap
,
nil
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/metadata.go
View file @
bed435de
...
...
@@ -18,26 +18,79 @@ package priorities
import
(
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
)
type
PriorityMetadataFactory
struct
{
serviceLister
algorithm
.
ServiceLister
controllerLister
algorithm
.
ControllerLister
replicaSetLister
algorithm
.
ReplicaSetLister
statefulSetLister
algorithm
.
StatefulSetLister
}
func
NewPriorityMetadataFactory
(
serviceLister
algorithm
.
ServiceLister
,
controllerLister
algorithm
.
ControllerLister
,
replicaSetLister
algorithm
.
ReplicaSetLister
,
statefulSetLister
algorithm
.
StatefulSetLister
)
algorithm
.
MetadataProducer
{
factory
:=
&
PriorityMetadataFactory
{
serviceLister
:
serviceLister
,
controllerLister
:
controllerLister
,
replicaSetLister
:
replicaSetLister
,
statefulSetLister
:
statefulSetLister
,
}
return
factory
.
PriorityMetadata
}
// priorityMetadata is a type that is passed as metadata for priority functions
type
priorityMetadata
struct
{
nonZeroRequest
*
schedulercache
.
Resource
podTolerations
[]
v1
.
Toleration
affinity
*
v1
.
Affinity
podSelectors
[]
labels
.
Selector
}
// PriorityMetadata is a MetadataProducer. Node info can be nil.
func
PriorityMetadata
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
{
func
(
pmf
*
PriorityMetadataFactory
)
PriorityMetadata
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
)
interface
{}
{
// If we cannot compute metadata, just return nil
if
pod
==
nil
{
return
nil
}
tolerationsPreferNoSchedule
:=
getAllTolerationPreferNoSchedule
(
pod
.
Spec
.
Tolerations
)
podSelectors
:=
getSelectors
(
pod
,
pmf
.
serviceLister
,
pmf
.
controllerLister
,
pmf
.
replicaSetLister
,
pmf
.
statefulSetLister
)
return
&
priorityMetadata
{
nonZeroRequest
:
getNonZeroRequests
(
pod
),
podTolerations
:
tolerationsPreferNoSchedule
,
affinity
:
pod
.
Spec
.
Affinity
,
podSelectors
:
podSelectors
,
}
}
// getSelectors returns selectors of services, RCs and RSs matching the given pod.
func
getSelectors
(
pod
*
v1
.
Pod
,
sl
algorithm
.
ServiceLister
,
cl
algorithm
.
ControllerLister
,
rsl
algorithm
.
ReplicaSetLister
,
ssl
algorithm
.
StatefulSetLister
)
[]
labels
.
Selector
{
var
selectors
[]
labels
.
Selector
if
services
,
err
:=
sl
.
GetPodServices
(
pod
);
err
==
nil
{
for
_
,
service
:=
range
services
{
selectors
=
append
(
selectors
,
labels
.
SelectorFromSet
(
service
.
Spec
.
Selector
))
}
}
if
rcs
,
err
:=
cl
.
GetPodControllers
(
pod
);
err
==
nil
{
for
_
,
rc
:=
range
rcs
{
selectors
=
append
(
selectors
,
labels
.
SelectorFromSet
(
rc
.
Spec
.
Selector
))
}
}
if
rss
,
err
:=
rsl
.
GetPodReplicaSets
(
pod
);
err
==
nil
{
for
_
,
rs
:=
range
rss
{
if
selector
,
err
:=
metav1
.
LabelSelectorAsSelector
(
rs
.
Spec
.
Selector
);
err
==
nil
{
selectors
=
append
(
selectors
,
selector
)
}
}
}
if
sss
,
err
:=
ssl
.
GetPodStatefulSets
(
pod
);
err
==
nil
{
for
_
,
ss
:=
range
sss
{
if
selector
,
err
:=
metav1
.
LabelSelectorAsSelector
(
ss
.
Spec
.
Selector
);
err
==
nil
{
selectors
=
append
(
selectors
,
selector
)
}
}
}
return
selectors
}
plugin/pkg/scheduler/algorithm/priorities/metadata_test.go
View file @
bed435de
...
...
@@ -20,11 +20,14 @@ import (
"reflect"
"testing"
apps
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
extensions
"k8s.io/api/extensions/v1beta1"
"k8s.io/apimachinery/pkg/api/resource"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
priorityutil
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
schedulertesting
"k8s.io/kubernetes/plugin/pkg/scheduler/testing"
)
func
TestPriorityMetadata
(
t
*
testing
.
T
)
{
...
...
@@ -123,8 +126,13 @@ func TestPriorityMetadata(t *testing.T) {
test
:
"Produce a priorityMetadata with specified requests"
,
},
}
mataDataProducer
:=
NewPriorityMetadataFactory
(
schedulertesting
.
FakeServiceLister
([]
*
v1
.
Service
{}),
schedulertesting
.
FakeControllerLister
([]
*
v1
.
ReplicationController
{}),
schedulertesting
.
FakeReplicaSetLister
([]
*
extensions
.
ReplicaSet
{}),
schedulertesting
.
FakeStatefulSetLister
([]
*
apps
.
StatefulSet
{}))
for
_
,
test
:=
range
tests
{
ptData
:=
PriorityMetadata
(
test
.
pod
,
nil
)
ptData
:=
mataDataProducer
(
test
.
pod
,
nil
)
if
!
reflect
.
DeepEqual
(
test
.
expected
,
ptData
)
{
t
.
Errorf
(
"%s: expected %#v, got %#v"
,
test
.
test
,
test
.
expected
,
ptData
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/most_requested_test.go
View file @
bed435de
...
...
@@ -210,7 +210,7 @@ func TestMostRequested(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
MostRequestedPriorityMap
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
MostRequestedPriorityMap
,
nil
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/node_affinity_test.go
View file @
bed435de
...
...
@@ -167,7 +167,7 @@ func TestNodeAffinityPriority(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
nil
,
test
.
nodes
)
nap
:=
priorityFunction
(
CalculateNodeAffinityPriorityMap
,
CalculateNodeAffinityPriorityReduce
)
nap
:=
priorityFunction
(
CalculateNodeAffinityPriorityMap
,
CalculateNodeAffinityPriorityReduce
,
nil
)
list
,
err
:=
nap
(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
...
...
plugin/pkg/scheduler/algorithm/priorities/node_label_test.go
View file @
bed435de
...
...
@@ -108,7 +108,11 @@ func TestNewNodeLabelPriority(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
nil
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
NewNodeLabelPriority
(
test
.
label
,
test
.
presence
))(
nil
,
nodeNameToInfo
,
test
.
nodes
)
labelPrioritizer
:=
&
NodeLabelPrioritizer
{
label
:
test
.
label
,
presence
:
test
.
presence
,
}
list
,
err
:=
priorityFunction
(
labelPrioritizer
.
CalculateNodeLabelPriorityMap
,
nil
,
nil
)(
nil
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods_test.go
View file @
bed435de
...
...
@@ -142,7 +142,7 @@ func TestNodePreferAvoidPriority(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
nil
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
CalculateNodePreferAvoidPodsPriorityMap
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
list
,
err
:=
priorityFunction
(
CalculateNodePreferAvoidPodsPriorityMap
,
nil
,
nil
)(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
plugin/pkg/scheduler/algorithm/priorities/selector_spreading_test.go
View file @
bed435de
...
...
@@ -338,17 +338,26 @@ func TestSelectorSpreadPriority(t *testing.T) {
},
}
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
nil
)
for
i
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
makeNodeList
(
test
.
nodes
)
)
selectorSpread
:=
SelectorSpread
{
serviceLister
:
schedulertesting
.
FakeServiceLister
(
test
.
services
),
controllerLister
:
schedulertesting
.
FakeControllerLister
(
test
.
rcs
),
replicaSetLister
:
schedulertesting
.
FakeReplicaSetLister
(
test
.
rss
),
statefulSetLister
:
schedulertesting
.
FakeStatefulSetLister
(
test
.
sss
),
}
list
,
err
:=
selectorSpread
.
CalculateSpreadPriority
(
test
.
pod
,
nodeNameToInfo
,
makeNodeList
(
test
.
nodes
))
mataDataProducer
:=
NewPriorityMetadataFactory
(
schedulertesting
.
FakeServiceLister
(
test
.
services
),
schedulertesting
.
FakeControllerLister
(
test
.
rcs
),
schedulertesting
.
FakeReplicaSetLister
(
test
.
rss
),
schedulertesting
.
FakeStatefulSetLister
(
test
.
sss
))
mataData
:=
mataDataProducer
(
test
.
pod
,
nodeNameToInfo
)
ttp
:=
priorityFunction
(
selectorSpread
.
CalculateSpreadPriorityMap
,
selectorSpread
.
CalculateSpreadPriorityReduce
,
mataData
)
list
,
err
:=
ttp
(
test
.
pod
,
nodeNameToInfo
,
makeNodeList
(
test
.
nodes
))
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v
"
,
err
)
t
.
Errorf
(
"unexpected error: %v
index : %d
\n
"
,
err
,
i
)
}
if
!
reflect
.
DeepEqual
(
test
.
expectedList
,
list
)
{
t
.
Errorf
(
"%s: expected %#v, got %#v"
,
test
.
test
,
test
.
expectedList
,
list
)
...
...
@@ -544,6 +553,7 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
buildPod
(
nodeMachine1Zone2
,
labels1
,
controllerRef
(
"ReplicationController"
,
"name"
,
"abc123"
)),
buildPod
(
nodeMachine1Zone3
,
labels1
,
controllerRef
(
"ReplicationController"
,
"name"
,
"abc123"
)),
},
//nodes: []string{nodeMachine1Zone3, nodeMachine1Zone2, nodeMachine1Zone3},
rcs
:
[]
*
v1
.
ReplicationController
{{
Spec
:
v1
.
ReplicationControllerSpec
{
Selector
:
labels1
}}},
expectedList
:
[]
schedulerapi
.
HostPriority
{
// Note that because we put two pods on the same node (nodeMachine1Zone3),
...
...
@@ -564,17 +574,25 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
},
}
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
nil
)
for
i
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
makeLabeledNodeList
(
labeledNodes
)
)
selectorSpread
:=
SelectorSpread
{
serviceLister
:
schedulertesting
.
FakeServiceLister
(
test
.
services
),
controllerLister
:
schedulertesting
.
FakeControllerLister
(
test
.
rcs
),
replicaSetLister
:
schedulertesting
.
FakeReplicaSetLister
(
test
.
rss
),
statefulSetLister
:
schedulertesting
.
FakeStatefulSetLister
(
test
.
sss
),
}
list
,
err
:=
selectorSpread
.
CalculateSpreadPriority
(
test
.
pod
,
nodeNameToInfo
,
makeLabeledNodeList
(
labeledNodes
))
mataDataProducer
:=
NewPriorityMetadataFactory
(
schedulertesting
.
FakeServiceLister
(
test
.
services
),
schedulertesting
.
FakeControllerLister
(
test
.
rcs
),
schedulertesting
.
FakeReplicaSetLister
(
test
.
rss
),
schedulertesting
.
FakeStatefulSetLister
(
test
.
sss
))
mataData
:=
mataDataProducer
(
test
.
pod
,
nodeNameToInfo
)
ttp
:=
priorityFunction
(
selectorSpread
.
CalculateSpreadPriorityMap
,
selectorSpread
.
CalculateSpreadPriorityReduce
,
mataData
)
list
,
err
:=
ttp
(
test
.
pod
,
nodeNameToInfo
,
makeLabeledNodeList
(
labeledNodes
))
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v
"
,
err
)
t
.
Errorf
(
"unexpected error: %v
index : %d"
,
err
,
i
)
}
// sort the two lists to avoid failures on account of different ordering
sort
.
Sort
(
test
.
expectedList
)
...
...
plugin/pkg/scheduler/algorithm/priorities/taint_toleration_test.go
View file @
bed435de
...
...
@@ -227,7 +227,7 @@ func TestTaintAndToleration(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
nil
,
test
.
nodes
)
ttp
:=
priorityFunction
(
ComputeTaintTolerationPriorityMap
,
ComputeTaintTolerationPriorityReduce
)
ttp
:=
priorityFunction
(
ComputeTaintTolerationPriorityMap
,
ComputeTaintTolerationPriorityReduce
,
nil
)
list
,
err
:=
ttp
(
test
.
pod
,
nodeNameToInfo
,
test
.
nodes
)
if
err
!=
nil
{
t
.
Errorf
(
"%s, unexpected error: %v"
,
test
.
test
,
err
)
...
...
plugin/pkg/scheduler/algorithm/priorities/test_util.go
View file @
bed435de
...
...
@@ -41,18 +41,18 @@ func makeNode(node string, milliCPU, memory int64) *v1.Node {
}
}
func
priorityFunction
(
mapFn
algorithm
.
PriorityMapFunction
,
reduceFn
algorithm
.
PriorityReduceFunction
)
algorithm
.
PriorityFunction
{
func
priorityFunction
(
mapFn
algorithm
.
PriorityMapFunction
,
reduceFn
algorithm
.
PriorityReduceFunction
,
mataData
interface
{}
)
algorithm
.
PriorityFunction
{
return
func
(
pod
*
v1
.
Pod
,
nodeNameToInfo
map
[
string
]
*
schedulercache
.
NodeInfo
,
nodes
[]
*
v1
.
Node
)
(
schedulerapi
.
HostPriorityList
,
error
)
{
result
:=
make
(
schedulerapi
.
HostPriorityList
,
0
,
len
(
nodes
))
for
i
:=
range
nodes
{
hostResult
,
err
:=
mapFn
(
pod
,
nil
,
nodeNameToInfo
[
nodes
[
i
]
.
Name
])
hostResult
,
err
:=
mapFn
(
pod
,
mataData
,
nodeNameToInfo
[
nodes
[
i
]
.
Name
])
if
err
!=
nil
{
return
nil
,
err
}
result
=
append
(
result
,
hostResult
)
}
if
reduceFn
!=
nil
{
if
err
:=
reduceFn
(
pod
,
nil
,
nodeNameToInfo
,
result
);
err
!=
nil
{
if
err
:=
reduceFn
(
pod
,
mataData
,
nodeNameToInfo
,
result
);
err
!=
nil
{
return
nil
,
err
}
}
...
...
plugin/pkg/scheduler/algorithmprovider/defaults/defaults.go
View file @
bed435de
...
...
@@ -46,7 +46,7 @@ func init() {
})
factory
.
RegisterPriorityMetadataProducerFactory
(
func
(
args
factory
.
PluginFactoryArgs
)
algorithm
.
MetadataProducer
{
return
priorities
.
PriorityMetadata
return
priorities
.
NewPriorityMetadataFactory
(
args
.
ServiceLister
,
args
.
ControllerLister
,
args
.
ReplicaSetLister
,
args
.
StatefulSetLister
)
})
registerAlgorithmProvider
(
defaultPredicates
(),
defaultPriorities
())
...
...
@@ -90,13 +90,12 @@ func init() {
factory
.
RegisterPriorityConfigFactory
(
"ServiceSpreadingPriority"
,
factory
.
PriorityConfigFactory
{
Function
:
func
(
args
factory
.
PluginFactoryArgs
)
algorithm
.
PriorityFunction
{
MapReduceFunction
:
func
(
args
factory
.
PluginFactoryArgs
)
(
algorithm
.
PriorityMapFunction
,
algorithm
.
PriorityReduceFunction
)
{
return
priorities
.
NewSelectorSpreadPriority
(
args
.
ServiceLister
,
algorithm
.
EmptyControllerLister
{},
algorithm
.
EmptyReplicaSetLister
{},
algorithm
.
EmptyStatefulSetLister
{})
},
Weight
:
1
,
},
)
// EqualPriority is a prioritizer function that gives an equal weight of one to all nodes
// Register the priority function so that its available
// but do not include it as part of the default priorities
...
...
@@ -213,12 +212,13 @@ func defaultPriorities() sets.String {
factory
.
RegisterPriorityConfigFactory
(
"SelectorSpreadPriority"
,
factory
.
PriorityConfigFactory
{
Function
:
func
(
args
factory
.
PluginFactoryArgs
)
algorithm
.
PriorityFunction
{
MapReduceFunction
:
func
(
args
factory
.
PluginFactoryArgs
)
(
algorithm
.
PriorityMapFunction
,
algorithm
.
PriorityReduceFunction
)
{
return
priorities
.
NewSelectorSpreadPriority
(
args
.
ServiceLister
,
args
.
ControllerLister
,
args
.
ReplicaSetLister
,
args
.
StatefulSetLister
)
},
Weight
:
1
,
},
),
// pods should be placed in the same topological domain (e.g. same node, same rack, same zone, same power domain, etc.)
// as some other pods, or, conversely, should not be placed in the same topological domain as some other pods.
factory
.
RegisterPriorityConfigFactory
(
...
...
plugin/pkg/scheduler/core/generic_scheduler_test.go
View file @
bed435de
...
...
@@ -522,18 +522,26 @@ func TestZeroRequest(t *testing.T) {
priorityConfigs
:=
[]
algorithm
.
PriorityConfig
{
{
Map
:
algorithmpriorities
.
LeastRequestedPriorityMap
,
Weight
:
1
},
{
Map
:
algorithmpriorities
.
BalancedResourceAllocationMap
,
Weight
:
1
},
{
Function
:
algorithmpriorities
.
NewSelectorSpreadPriority
(
schedulertesting
.
FakeServiceLister
([]
*
v1
.
Service
{}),
schedulertesting
.
FakeControllerLister
([]
*
v1
.
ReplicationController
{}),
schedulertesting
.
FakeReplicaSetLister
([]
*
extensions
.
ReplicaSet
{}),
schedulertesting
.
FakeStatefulSetLister
([]
*
apps
.
StatefulSet
{})),
Weight
:
1
,
},
}
selectorSpreadPriorityMap
,
selectorSpreadPriorityReduce
:=
algorithmpriorities
.
NewSelectorSpreadPriority
(
schedulertesting
.
FakeServiceLister
([]
*
v1
.
Service
{}),
schedulertesting
.
FakeControllerLister
([]
*
v1
.
ReplicationController
{}),
schedulertesting
.
FakeReplicaSetLister
([]
*
extensions
.
ReplicaSet
{}),
schedulertesting
.
FakeStatefulSetLister
([]
*
apps
.
StatefulSet
{}))
pc
:=
algorithm
.
PriorityConfig
{
Map
:
selectorSpreadPriorityMap
,
Reduce
:
selectorSpreadPriorityReduce
,
Weight
:
1
}
priorityConfigs
=
append
(
priorityConfigs
,
pc
)
nodeNameToInfo
:=
schedulercache
.
CreateNodeNameToInfoMap
(
test
.
pods
,
test
.
nodes
)
mataDataProducer
:=
algorithmpriorities
.
NewPriorityMetadataFactory
(
schedulertesting
.
FakeServiceLister
([]
*
v1
.
Service
{}),
schedulertesting
.
FakeControllerLister
([]
*
v1
.
ReplicationController
{}),
schedulertesting
.
FakeReplicaSetLister
([]
*
extensions
.
ReplicaSet
{}),
schedulertesting
.
FakeStatefulSetLister
([]
*
apps
.
StatefulSet
{}))
mataData
:=
mataDataProducer
(
test
.
pod
,
nodeNameToInfo
)
list
,
err
:=
PrioritizeNodes
(
test
.
pod
,
nodeNameToInfo
,
algorithm
.
EmptyMetadataProducer
,
priorityConfigs
,
test
.
pod
,
nodeNameToInfo
,
mataData
,
priorityConfigs
,
schedulertesting
.
FakeNodeLister
(
test
.
nodes
),
[]
algorithm
.
SchedulerExtender
{})
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
...
...
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