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
8d3973c2
Commit
8d3973c2
authored
Oct 10, 2016
by
gmarek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Small refactoring of scheduler predicates
parent
b3590348
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
219 additions
and
153 deletions
+219
-153
networking.go
test/e2e/common/networking.go
+8
-9
networking_utils.go
test/e2e/framework/networking_utils.go
+35
-36
util.go
test/e2e/framework/util.go
+8
-46
networking.go
test/e2e/networking.go
+31
-32
scheduler_predicates.go
test/e2e/scheduler_predicates.go
+33
-30
density_utils.go
test/utils/density_utils.go
+104
-0
No files found.
test/e2e/common/networking.go
View file @
8d3973c2
...
@@ -20,7 +20,6 @@ import (
...
@@ -20,7 +20,6 @@ import (
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/ginkgo"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/test/e2e/framework"
"k8s.io/kubernetes/test/e2e/framework"
networking_util
"k8s.io/kubernetes/test/utils"
)
)
var
_
=
framework
.
KubeDescribe
(
"Networking"
,
func
()
{
var
_
=
framework
.
KubeDescribe
(
"Networking"
,
func
()
{
...
@@ -32,30 +31,30 @@ var _ = framework.KubeDescribe("Networking", func() {
...
@@ -32,30 +31,30 @@ var _ = framework.KubeDescribe("Networking", func() {
// expect exactly one unique hostname. Each of these endpoints reports
// expect exactly one unique hostname. Each of these endpoints reports
// its own hostname.
// its own hostname.
It
(
"should function for intra-pod communication: http [Conformance]"
,
func
()
{
It
(
"should function for intra-pod communication: http [Conformance]"
,
func
()
{
config
:=
networking_util
.
NewCoreNetworkingTestConfig
(
f
)
config
:=
framework
.
NewCoreNetworkingTestConfig
(
f
)
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
config
.
DialFromTestContainer
(
"http"
,
endpointPod
.
Status
.
PodIP
,
networking_util
.
EndpointHttpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
config
.
DialFromTestContainer
(
"http"
,
endpointPod
.
Status
.
PodIP
,
framework
.
EndpointHttpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
}
}
})
})
It
(
"should function for intra-pod communication: udp [Conformance]"
,
func
()
{
It
(
"should function for intra-pod communication: udp [Conformance]"
,
func
()
{
config
:=
networking_util
.
NewCoreNetworkingTestConfig
(
f
)
config
:=
framework
.
NewCoreNetworkingTestConfig
(
f
)
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
config
.
DialFromTestContainer
(
"udp"
,
endpointPod
.
Status
.
PodIP
,
networking_util
.
EndpointUdpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
config
.
DialFromTestContainer
(
"udp"
,
endpointPod
.
Status
.
PodIP
,
framework
.
EndpointUdpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
}
}
})
})
It
(
"should function for node-pod communication: http [Conformance]"
,
func
()
{
It
(
"should function for node-pod communication: http [Conformance]"
,
func
()
{
config
:=
networking_util
.
NewCoreNetworkingTestConfig
(
f
)
config
:=
framework
.
NewCoreNetworkingTestConfig
(
f
)
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
config
.
DialFromNode
(
"http"
,
endpointPod
.
Status
.
PodIP
,
networking_util
.
EndpointHttpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
config
.
DialFromNode
(
"http"
,
endpointPod
.
Status
.
PodIP
,
framework
.
EndpointHttpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
}
}
})
})
It
(
"should function for node-pod communication: udp [Conformance]"
,
func
()
{
It
(
"should function for node-pod communication: udp [Conformance]"
,
func
()
{
config
:=
networking_util
.
NewCoreNetworkingTestConfig
(
f
)
config
:=
framework
.
NewCoreNetworkingTestConfig
(
f
)
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
for
_
,
endpointPod
:=
range
config
.
EndpointPods
{
config
.
DialFromNode
(
"udp"
,
endpointPod
.
Status
.
PodIP
,
networking_util
.
EndpointUdpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
config
.
DialFromNode
(
"udp"
,
endpointPod
.
Status
.
PodIP
,
framework
.
EndpointUdpPort
,
config
.
MaxTries
,
0
,
sets
.
NewString
(
endpointPod
.
Name
))
}
}
})
})
})
})
...
...
test/
utils
/networking_utils.go
→
test/
e2e/framework
/networking_utils.go
View file @
8d3973c2
This diff is collapsed.
Click to expand it.
test/e2e/framework/util.go
View file @
8d3973c2
...
@@ -79,6 +79,7 @@ import (
...
@@ -79,6 +79,7 @@ import (
utilyaml
"k8s.io/kubernetes/pkg/util/yaml"
utilyaml
"k8s.io/kubernetes/pkg/util/yaml"
"k8s.io/kubernetes/pkg/version"
"k8s.io/kubernetes/pkg/version"
"k8s.io/kubernetes/pkg/watch"
"k8s.io/kubernetes/pkg/watch"
testutil
"k8s.io/kubernetes/test/utils"
"github.com/blang/semver"
"github.com/blang/semver"
"golang.org/x/crypto/ssh"
"golang.org/x/crypto/ssh"
...
@@ -3022,64 +3023,25 @@ func WaitForAllNodesSchedulable(c *client.Client) error {
...
@@ -3022,64 +3023,25 @@ func WaitForAllNodesSchedulable(c *client.Client) error {
})
})
}
}
func
AddOrUpdateLabelOnNode
(
c
*
client
.
Client
,
nodeName
string
,
labelKey
string
,
labelValue
string
)
{
func
AddOrUpdateLabelOnNode
(
c
clientset
.
Interface
,
nodeName
string
,
labelKey
,
labelValue
string
)
{
patch
:=
fmt
.
Sprintf
(
`{"metadata":{"labels":{"%s":"%s"}}}`
,
labelKey
,
labelValue
)
ExpectNoError
(
testutil
.
AddLabelsToNode
(
c
,
nodeName
,
map
[
string
]
string
{
labelKey
:
labelValue
}))
var
err
error
for
attempt
:=
0
;
attempt
<
UpdateRetries
;
attempt
++
{
err
=
c
.
Patch
(
api
.
MergePatchType
)
.
Resource
(
"nodes"
)
.
Name
(
nodeName
)
.
Body
([]
byte
(
patch
))
.
Do
()
.
Error
()
if
err
!=
nil
{
if
!
apierrs
.
IsConflict
(
err
)
{
ExpectNoError
(
err
)
}
else
{
Logf
(
"Conflict when trying to add a label %v:%v to %v"
,
labelKey
,
labelValue
,
nodeName
)
}
}
else
{
break
}
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
ExpectNoError
(
err
)
}
}
func
ExpectNodeHasLabel
(
c
*
client
.
Client
,
nodeName
string
,
labelKey
string
,
labelValue
string
)
{
func
ExpectNodeHasLabel
(
c
clientset
.
Interface
,
nodeName
string
,
labelKey
string
,
labelValue
string
)
{
By
(
"verifying the node has the label "
+
labelKey
+
" "
+
labelValue
)
By
(
"verifying the node has the label "
+
labelKey
+
" "
+
labelValue
)
node
,
err
:=
c
.
Nodes
()
.
Get
(
nodeName
)
node
,
err
:=
c
.
Core
()
.
Nodes
()
.
Get
(
nodeName
)
ExpectNoError
(
err
)
ExpectNoError
(
err
)
Expect
(
node
.
Labels
[
labelKey
])
.
To
(
Equal
(
labelValue
))
Expect
(
node
.
Labels
[
labelKey
])
.
To
(
Equal
(
labelValue
))
}
}
// RemoveLabelOffNode is for cleaning up labels temporarily added to node,
// RemoveLabelOffNode is for cleaning up labels temporarily added to node,
// won't fail if target label doesn't exist or has been removed.
// won't fail if target label doesn't exist or has been removed.
func
RemoveLabelOffNode
(
c
*
client
.
Client
,
nodeName
string
,
labelKey
string
)
{
func
RemoveLabelOffNode
(
c
clientset
.
Interface
,
nodeName
string
,
labelKey
string
)
{
By
(
"removing the label "
+
labelKey
+
" off the node "
+
nodeName
)
By
(
"removing the label "
+
labelKey
+
" off the node "
+
nodeName
)
var
nodeUpdated
*
api
.
Node
ExpectNoError
(
testutil
.
RemoveLabelOffNode
(
c
,
nodeName
,
[]
string
{
labelKey
}))
var
node
*
api
.
Node
var
err
error
for
attempt
:=
0
;
attempt
<
UpdateRetries
;
attempt
++
{
node
,
err
=
c
.
Nodes
()
.
Get
(
nodeName
)
ExpectNoError
(
err
)
if
node
.
Labels
==
nil
||
len
(
node
.
Labels
[
labelKey
])
==
0
{
return
}
delete
(
node
.
Labels
,
labelKey
)
nodeUpdated
,
err
=
c
.
Nodes
()
.
Update
(
node
)
if
err
!=
nil
{
if
!
apierrs
.
IsConflict
(
err
)
{
ExpectNoError
(
err
)
}
else
{
Logf
(
"Conflict when trying to remove a label %v from %v"
,
labelKey
,
nodeName
)
}
}
else
{
break
}
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
ExpectNoError
(
err
)
By
(
"verifying the node doesn't have the label "
+
labelKey
)
By
(
"verifying the node doesn't have the label "
+
labelKey
)
if
nodeUpdated
.
Labels
!=
nil
&&
len
(
nodeUpdated
.
Labels
[
labelKey
])
!=
0
{
ExpectNoError
(
testutil
.
VerifyLabelsRemoved
(
c
,
nodeName
,
[]
string
{
labelKey
}))
Failf
(
"Failed removing label "
+
labelKey
+
" of the node "
+
nodeName
)
}
}
}
func
AddOrUpdateTaintOnNode
(
c
*
client
.
Client
,
nodeName
string
,
taint
api
.
Taint
)
{
func
AddOrUpdateTaintOnNode
(
c
*
client
.
Client
,
nodeName
string
,
taint
api
.
Taint
)
{
...
...
test/e2e/networking.go
View file @
8d3973c2
This diff is collapsed.
Click to expand it.
test/e2e/scheduler_predicates.go
View file @
8d3973c2
...
@@ -23,6 +23,7 @@ import (
...
@@ -23,6 +23,7 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/resource"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
client
"k8s.io/kubernetes/pkg/client/unversioned"
client
"k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/sets"
"k8s.io/kubernetes/pkg/util/uuid"
"k8s.io/kubernetes/pkg/util/uuid"
...
@@ -48,6 +49,7 @@ type pausePodConfig struct {
...
@@ -48,6 +49,7 @@ type pausePodConfig struct {
var
_
=
framework
.
KubeDescribe
(
"SchedulerPredicates [Serial]"
,
func
()
{
var
_
=
framework
.
KubeDescribe
(
"SchedulerPredicates [Serial]"
,
func
()
{
var
c
*
client
.
Client
var
c
*
client
.
Client
var
cs
clientset
.
Interface
var
nodeList
*
api
.
NodeList
var
nodeList
*
api
.
NodeList
var
systemPodsNo
int
var
systemPodsNo
int
var
totalPodCapacity
int64
var
totalPodCapacity
int64
...
@@ -67,6 +69,7 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -67,6 +69,7 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
BeforeEach
(
func
()
{
BeforeEach
(
func
()
{
c
=
f
.
Client
c
=
f
.
Client
cs
=
f
.
ClientSet
ns
=
f
.
Namespace
.
Name
ns
=
f
.
Namespace
.
Name
nodeList
=
&
api
.
NodeList
{}
nodeList
=
&
api
.
NodeList
{}
...
@@ -262,9 +265,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -262,9 +265,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
k
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-%s"
,
string
(
uuid
.
NewUUID
()))
k
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-%s"
,
string
(
uuid
.
NewUUID
()))
v
:=
"42"
v
:=
"42"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to relaunch the pod, now with labels."
)
By
(
"Trying to relaunch the pod, now with labels."
)
labelPodName
:=
"with-labels"
labelPodName
:=
"with-labels"
...
@@ -333,9 +336,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -333,9 +336,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
k
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-%s"
,
string
(
uuid
.
NewUUID
()))
k
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-%s"
,
string
(
uuid
.
NewUUID
()))
v
:=
"42"
v
:=
"42"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to relaunch the pod, now with labels."
)
By
(
"Trying to relaunch the pod, now with labels."
)
labelPodName
:=
"with-labels"
labelPodName
:=
"with-labels"
...
@@ -378,9 +381,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -378,9 +381,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a label with fake az info on the found node."
)
By
(
"Trying to apply a label with fake az info on the found node."
)
k
:=
"kubernetes.io/e2e-az-name"
k
:=
"kubernetes.io/e2e-az-name"
v
:=
"e2e-az1"
v
:=
"e2e-az1"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to launch a pod that with NodeAffinity setting as embedded JSON string in the annotation value."
)
By
(
"Trying to launch a pod that with NodeAffinity setting as embedded JSON string in the annotation value."
)
pod
:=
createPodWithNodeAffinity
(
f
)
pod
:=
createPodWithNodeAffinity
(
f
)
...
@@ -466,9 +469,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -466,9 +469,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
v
:=
"china-e2etest"
v
:=
"china-e2etest"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to launch the pod, now with podAffinity."
)
By
(
"Trying to launch the pod, now with podAffinity."
)
labelPodName
:=
"with-podaffinity-"
+
string
(
uuid
.
NewUUID
())
labelPodName
:=
"with-podaffinity-"
+
string
(
uuid
.
NewUUID
())
...
@@ -521,9 +524,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -521,9 +524,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
v
:=
"china-e2etest"
v
:=
"china-e2etest"
for
_
,
nodeName
:=
range
nodeNames
{
for
_
,
nodeName
:=
range
nodeNames
{
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
}
}
By
(
"Trying to launch another pod on the first node with the service label."
)
By
(
"Trying to launch another pod on the first node with the service label."
)
...
@@ -569,9 +572,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -569,9 +572,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
v
:=
"kubernetes-e2e"
v
:=
"kubernetes-e2e"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to launch the pod, now with multiple pod affinities with diff LabelOperators."
)
By
(
"Trying to launch the pod, now with multiple pod affinities with diff LabelOperators."
)
labelPodName
:=
"with-podaffinity-"
+
string
(
uuid
.
NewUUID
())
labelPodName
:=
"with-podaffinity-"
+
string
(
uuid
.
NewUUID
())
...
@@ -620,9 +623,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -620,9 +623,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
v
:=
"e2e-testing"
v
:=
"e2e-testing"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to launch the pod, now with Pod affinity and anti affinity."
)
By
(
"Trying to launch the pod, now with Pod affinity and anti affinity."
)
pod
:=
createPodWithPodAffinity
(
f
,
k
)
pod
:=
createPodWithPodAffinity
(
f
,
k
)
...
@@ -645,9 +648,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -645,9 +648,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a label with fake az info on the found node."
)
By
(
"Trying to apply a label with fake az info on the found node."
)
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
k
:=
"e2e.inter-pod-affinity.kubernetes.io/zone"
v
:=
"e2e-az1"
v
:=
"e2e-az1"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
k
,
v
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
k
,
v
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
k
,
v
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
k
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
k
)
By
(
"Trying to launch a pod that with PodAffinity & PodAntiAffinity setting as embedded JSON string in the annotation value."
)
By
(
"Trying to launch a pod that with PodAffinity & PodAntiAffinity setting as embedded JSON string in the annotation value."
)
pod
:=
createPodWithPodAffinity
(
f
,
"kubernetes.io/hostname"
)
pod
:=
createPodWithPodAffinity
(
f
,
"kubernetes.io/hostname"
)
...
@@ -682,9 +685,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -682,9 +685,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
labelKey
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-label-key-%s"
,
string
(
uuid
.
NewUUID
()))
labelKey
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-label-key-%s"
,
string
(
uuid
.
NewUUID
()))
labelValue
:=
"testing-label-value"
labelValue
:=
"testing-label-value"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
labelKey
,
labelValue
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
labelKey
,
labelValue
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
labelKey
,
labelValue
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
labelKey
,
labelValue
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
labelKey
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
labelKey
)
By
(
"Trying to relaunch the pod, now with tolerations."
)
By
(
"Trying to relaunch the pod, now with tolerations."
)
tolerationPodName
:=
"with-tolerations"
tolerationPodName
:=
"with-tolerations"
...
@@ -734,9 +737,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
...
@@ -734,9 +737,9 @@ var _ = framework.KubeDescribe("SchedulerPredicates [Serial]", func() {
By
(
"Trying to apply a random label on the found node."
)
By
(
"Trying to apply a random label on the found node."
)
labelKey
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-label-key-%s"
,
string
(
uuid
.
NewUUID
()))
labelKey
:=
fmt
.
Sprintf
(
"kubernetes.io/e2e-label-key-%s"
,
string
(
uuid
.
NewUUID
()))
labelValue
:=
"testing-label-value"
labelValue
:=
"testing-label-value"
framework
.
AddOrUpdateLabelOnNode
(
c
,
nodeName
,
labelKey
,
labelValue
)
framework
.
AddOrUpdateLabelOnNode
(
c
s
,
nodeName
,
labelKey
,
labelValue
)
framework
.
ExpectNodeHasLabel
(
c
,
nodeName
,
labelKey
,
labelValue
)
framework
.
ExpectNodeHasLabel
(
c
s
,
nodeName
,
labelKey
,
labelValue
)
defer
framework
.
RemoveLabelOffNode
(
c
,
nodeName
,
labelKey
)
defer
framework
.
RemoveLabelOffNode
(
c
s
,
nodeName
,
labelKey
)
By
(
"Trying to relaunch the pod, still no tolerations."
)
By
(
"Trying to relaunch the pod, still no tolerations."
)
podNameNoTolerations
:=
"still-no-tolerations"
podNameNoTolerations
:=
"still-no-tolerations"
...
...
test/utils/density_utils.go
0 → 100644
View file @
8d3973c2
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package
utils
import
(
"fmt"
"strings"
"time"
"k8s.io/kubernetes/pkg/api"
apierrs
"k8s.io/kubernetes/pkg/api/errors"
clientset
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"github.com/golang/glog"
)
const
(
retries
=
5
)
func
AddLabelsToNode
(
c
clientset
.
Interface
,
nodeName
string
,
labels
map
[
string
]
string
)
error
{
tokens
:=
make
([]
string
,
0
,
len
(
labels
))
for
k
,
v
:=
range
labels
{
tokens
=
append
(
tokens
,
"
\"
"
+
k
+
"
\"
:
\"
"
+
v
+
"
\"
"
)
}
labelString
:=
"{"
+
strings
.
Join
(
tokens
,
","
)
+
"}"
patch
:=
fmt
.
Sprintf
(
`{"metadata":{"labels":%v}}`
,
labelString
)
var
err
error
for
attempt
:=
0
;
attempt
<
retries
;
attempt
++
{
_
,
err
=
c
.
Core
()
.
Nodes
()
.
Patch
(
nodeName
,
api
.
MergePatchType
,
[]
byte
(
patch
))
if
err
!=
nil
{
if
!
apierrs
.
IsConflict
(
err
)
{
return
err
}
}
else
{
break
}
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
return
err
}
// RemoveLabelOffNode is for cleaning up labels temporarily added to node,
// won't fail if target label doesn't exist or has been removed.
func
RemoveLabelOffNode
(
c
clientset
.
Interface
,
nodeName
string
,
labelKeys
[]
string
)
error
{
var
node
*
api
.
Node
var
err
error
for
attempt
:=
0
;
attempt
<
retries
;
attempt
++
{
node
,
err
=
c
.
Core
()
.
Nodes
()
.
Get
(
nodeName
)
if
err
!=
nil
{
return
err
}
if
node
.
Labels
==
nil
{
return
nil
}
for
_
,
labelKey
:=
range
labelKeys
{
if
node
.
Labels
==
nil
||
len
(
node
.
Labels
[
labelKey
])
==
0
{
break
}
delete
(
node
.
Labels
,
labelKey
)
}
_
,
err
=
c
.
Core
()
.
Nodes
()
.
Update
(
node
)
if
err
!=
nil
{
if
!
apierrs
.
IsConflict
(
err
)
{
return
err
}
else
{
glog
.
V
(
2
)
.
Infof
(
"Conflict when trying to remove a labels %v from %v"
,
labelKeys
,
nodeName
)
}
}
else
{
break
}
time
.
Sleep
(
100
*
time
.
Millisecond
)
}
return
err
}
// VerifyLabelsRemoved checks if Node for given nodeName does not have any of labels from labelKeys.
// Return non-nil error if it does.
func
VerifyLabelsRemoved
(
c
clientset
.
Interface
,
nodeName
string
,
labelKeys
[]
string
)
error
{
node
,
err
:=
c
.
Core
()
.
Nodes
()
.
Get
(
nodeName
)
if
err
!=
nil
{
return
err
}
for
_
,
labelKey
:=
range
labelKeys
{
if
node
.
Labels
!=
nil
&&
len
(
node
.
Labels
[
labelKey
])
!=
0
{
return
fmt
.
Errorf
(
"Failed removing label "
+
labelKey
+
" of the node "
+
nodeName
)
}
}
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