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
00764625
Commit
00764625
authored
Aug 02, 2016
by
k8s-merge-robot
Committed by
GitHub
Aug 02, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #29379 from wojtek-t/optimize_pod_affinity_2
Automatic merge from submit-queue Optimize pod affinity 2 Ref #26144
parents
c7ec11b3
4bc410e4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
18 deletions
+21
-18
predicates.go
plugin/pkg/scheduler/algorithm/predicates/predicates.go
+0
-0
predicates_test.go
plugin/pkg/scheduler/algorithm/predicates/predicates_test.go
+20
-17
generic_scheduler.go
plugin/pkg/scheduler/generic_scheduler.go
+1
-1
No files found.
plugin/pkg/scheduler/algorithm/predicates/predicates.go
View file @
00764625
This diff is collapsed.
Click to expand it.
plugin/pkg/scheduler/algorithm/predicates/predicates_test.go
View file @
00764625
...
...
@@ -237,7 +237,7 @@ func TestPodFitsResources(t *testing.T) {
node
:=
api
.
Node
{
Status
:
api
.
NodeStatus
{
Capacity
:
makeResources
(
10
,
20
,
0
,
32
)
.
Capacity
,
Allocatable
:
makeAllocatableResources
(
10
,
20
,
0
,
32
)}}
test
.
nodeInfo
.
SetNode
(
&
node
)
fits
,
err
:=
PodFitsResources
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
fits
,
err
:=
PodFitsResources
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
test
.
wErr
)
{
t
.
Errorf
(
"%s: unexpected error: %v, want: %v"
,
test
.
test
,
err
,
test
.
wErr
)
}
...
...
@@ -290,7 +290,7 @@ func TestPodFitsResources(t *testing.T) {
node
:=
api
.
Node
{
Status
:
api
.
NodeStatus
{
Capacity
:
api
.
ResourceList
{},
Allocatable
:
makeAllocatableResources
(
10
,
20
,
0
,
1
)}}
test
.
nodeInfo
.
SetNode
(
&
node
)
fits
,
err
:=
PodFitsResources
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
fits
,
err
:=
PodFitsResources
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
test
.
wErr
)
{
t
.
Errorf
(
"%s: unexpected error: %v, want: %v"
,
test
.
test
,
err
,
test
.
wErr
)
}
...
...
@@ -346,7 +346,7 @@ func TestPodFitsHost(t *testing.T) {
for
_
,
test
:=
range
tests
{
nodeInfo
:=
schedulercache
.
NewNodeInfo
()
nodeInfo
.
SetNode
(
test
.
node
)
result
,
err
:=
PodFitsHost
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
result
,
err
:=
PodFitsHost
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrPodNotMatchHostName
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -419,7 +419,7 @@ func TestPodFitsHostPorts(t *testing.T) {
},
}
for
_
,
test
:=
range
tests
{
fits
,
err
:=
PodFitsHostPorts
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
fits
,
err
:=
PodFitsHostPorts
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrPodNotFitsHostPorts
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -504,7 +504,7 @@ func TestDiskConflicts(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrDiskConflict
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -556,7 +556,7 @@ func TestAWSDiskConflicts(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrDiskConflict
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -614,7 +614,7 @@ func TestRBDDiskConflicts(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
ok
,
err
:=
NoDiskConflict
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrDiskConflict
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -1093,7 +1093,7 @@ func TestPodFitsSelector(t *testing.T) {
nodeInfo
:=
schedulercache
.
NewNodeInfo
()
nodeInfo
.
SetNode
(
&
node
)
fits
,
err
:=
PodSelectorMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
fits
,
err
:=
PodSelectorMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrNodeSelectorNotMatch
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -1158,7 +1158,7 @@ func TestNodeLabelPresence(t *testing.T) {
nodeInfo
.
SetNode
(
&
node
)
labelChecker
:=
NodeLabelChecker
{
test
.
labels
,
test
.
presence
}
fits
,
err
:=
labelChecker
.
CheckNodeLabelPresence
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
fits
,
err
:=
labelChecker
.
CheckNodeLabelPresence
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrNodeLabelPresenceViolated
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -1303,7 +1303,7 @@ func TestServiceAffinity(t *testing.T) {
serviceAffinity
:=
ServiceAffinity
{
algorithm
.
FakePodLister
(
test
.
pods
),
algorithm
.
FakeServiceLister
(
test
.
services
),
FakeNodeListInfo
(
nodes
),
test
.
labels
}
nodeInfo
:=
schedulercache
.
NewNodeInfo
()
nodeInfo
.
SetNode
(
test
.
node
)
fits
,
err
:=
serviceAffinity
.
CheckServiceAffinity
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
fits
,
err
:=
serviceAffinity
.
CheckServiceAffinity
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrServiceAffinityViolated
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -1584,7 +1584,7 @@ func TestEBSVolumeCountConflicts(t *testing.T) {
for
_
,
test
:=
range
tests
{
pred
:=
NewMaxPDVolumeCountPredicate
(
filter
,
test
.
maxVols
,
pvInfo
,
pvcInfo
)
fits
,
err
:=
pred
(
test
.
newPod
,
PredicateMetadata
(
test
.
newPod
),
schedulercache
.
NewNodeInfo
(
test
.
existingPods
...
))
fits
,
err
:=
pred
(
test
.
newPod
,
PredicateMetadata
(
test
.
newPod
,
nil
),
schedulercache
.
NewNodeInfo
(
test
.
existingPods
...
))
if
err
!=
nil
&&
!
reflect
.
DeepEqual
(
err
,
ErrMaxVolumeCountExceeded
)
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -1778,7 +1778,7 @@ func TestRunGeneralPredicates(t *testing.T) {
}
for
_
,
test
:=
range
resourceTests
{
test
.
nodeInfo
.
SetNode
(
test
.
node
)
fits
,
err
:=
GeneralPredicates
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
fits
,
err
:=
GeneralPredicates
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
test
.
wErr
)
{
t
.
Errorf
(
"%s: unexpected error: %v, want: %v"
,
test
.
test
,
err
,
test
.
wErr
)
}
...
...
@@ -2326,7 +2326,8 @@ func TestInterPodAffinity(t *testing.T) {
}
nodeInfo
:=
schedulercache
.
NewNodeInfo
(
podsOnNode
...
)
nodeInfo
.
SetNode
(
test
.
node
)
fits
,
err
:=
fit
.
InterPodAffinityMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
nodeInfoMap
:=
map
[
string
]
*
schedulercache
.
NodeInfo
{
test
.
node
.
Name
:
nodeInfo
}
fits
,
err
:=
fit
.
InterPodAffinityMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nodeInfoMap
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrPodAffinityNotMatch
)
&&
err
!=
nil
{
t
.
Errorf
(
"%s: unexpected error %v"
,
test
.
test
,
err
)
}
...
...
@@ -2492,7 +2493,8 @@ func TestInterPodAffinityWithMultipleNodes(t *testing.T) {
}
nodeInfo
:=
schedulercache
.
NewNodeInfo
(
podsOnNode
...
)
nodeInfo
.
SetNode
(
&
node
)
fits
,
err
:=
testFit
.
InterPodAffinityMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
nodeInfoMap
:=
map
[
string
]
*
schedulercache
.
NodeInfo
{
node
.
Name
:
nodeInfo
}
fits
,
err
:=
testFit
.
InterPodAffinityMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nodeInfoMap
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrPodAffinityNotMatch
)
&&
err
!=
nil
{
t
.
Errorf
(
"%s: unexpected error %v"
,
test
.
test
,
err
)
}
...
...
@@ -2503,7 +2505,8 @@ func TestInterPodAffinityWithMultipleNodes(t *testing.T) {
if
affinity
!=
nil
&&
affinity
.
NodeAffinity
!=
nil
{
nodeInfo
:=
schedulercache
.
NewNodeInfo
()
nodeInfo
.
SetNode
(
&
node
)
fits2
,
err
:=
PodSelectorMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
nodeInfoMap
:=
map
[
string
]
*
schedulercache
.
NodeInfo
{
node
.
Name
:
nodeInfo
}
fits2
,
err
:=
PodSelectorMatches
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nodeInfoMap
),
nodeInfo
)
if
!
reflect
.
DeepEqual
(
err
,
ErrNodeSelectorNotMatch
)
&&
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
}
...
...
@@ -2789,7 +2792,7 @@ func TestPodToleratesTaints(t *testing.T) {
for
_
,
test
:=
range
podTolerateTaintsTests
{
nodeInfo
:=
schedulercache
.
NewNodeInfo
()
nodeInfo
.
SetNode
(
&
test
.
node
)
fits
,
err
:=
PodToleratesNodeTaints
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
nodeInfo
)
fits
,
err
:=
PodToleratesNodeTaints
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
nodeInfo
)
if
fits
==
false
&&
!
reflect
.
DeepEqual
(
err
,
ErrTaintsTolerationsNotMatch
)
{
t
.
Errorf
(
"%s, unexpected error: %v"
,
test
.
test
,
err
)
}
...
...
@@ -2895,7 +2898,7 @@ func TestPodSchedulesOnNodeWithMemoryPressureCondition(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
fits
,
err
:=
CheckNodeMemoryPressurePredicate
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
),
test
.
nodeInfo
)
fits
,
err
:=
CheckNodeMemoryPressurePredicate
(
test
.
pod
,
PredicateMetadata
(
test
.
pod
,
nil
),
test
.
nodeInfo
)
if
fits
!=
test
.
fits
{
t
.
Errorf
(
"%s: expected %v got %v"
,
test
.
name
,
test
.
fits
,
fits
)
}
...
...
plugin/pkg/scheduler/generic_scheduler.go
View file @
00764625
...
...
@@ -152,7 +152,7 @@ func findNodesThatFit(
// Create filtered list with enough space to avoid growing it
// and allow assigning.
filtered
=
make
([]
*
api
.
Node
,
len
(
nodes
))
meta
:=
predicates
.
PredicateMetadata
(
pod
)
meta
:=
predicates
.
PredicateMetadata
(
pod
,
nodeNameToInfo
)
errs
:=
[]
error
{}
var
predicateResultLock
sync
.
Mutex
...
...
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