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
da0a72f2
Commit
da0a72f2
authored
Mar 08, 2016
by
Marek Grabowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "continuously delete pods on nodes that don't exist"
parent
ed473cbf
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
12 additions
and
67 deletions
+12
-67
nodecontroller.go
pkg/controller/node/nodecontroller.go
+12
-25
nodecontroller_test.go
pkg/controller/node/nodecontroller_test.go
+0
-42
No files found.
pkg/controller/node/nodecontroller.go
View file @
da0a72f2
...
...
@@ -37,7 +37,6 @@ import (
"k8s.io/kubernetes/pkg/controller/framework"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/kubelet/util/format"
"k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/types"
"k8s.io/kubernetes/pkg/util"
...
...
@@ -285,8 +284,6 @@ func (nc *NodeController) Run(period time.Duration) {
return
false
,
remaining
})
},
nodeEvictionPeriod
,
wait
.
NeverStop
)
go
wait
.
Until
(
nc
.
cleanupOrphanedPods
,
30
*
time
.
Second
,
wait
.
NeverStop
)
}
// Generates num pod CIDRs that could be assigned to nodes.
...
...
@@ -371,28 +368,6 @@ func (nc *NodeController) maybeDeleteTerminatingPod(obj interface{}) {
}
}
// cleanupOrphanedPods deletes pods that are bound to nodes that don't
// exist.
func
(
nc
*
NodeController
)
cleanupOrphanedPods
()
{
pods
,
err
:=
nc
.
podStore
.
List
(
labels
.
Everything
())
if
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
return
}
for
_
,
pod
:=
range
pods
{
if
pod
.
Spec
.
NodeName
==
""
{
continue
}
if
_
,
exists
,
_
:=
nc
.
nodeStore
.
Store
.
GetByKey
(
pod
.
Spec
.
NodeName
);
exists
{
continue
}
if
err
:=
nc
.
forcefullyDeletePod
(
pod
);
err
!=
nil
{
utilruntime
.
HandleError
(
err
)
}
}
}
func
forcefullyDeletePod
(
c
clientset
.
Interface
,
pod
*
api
.
Pod
)
error
{
var
zero
int64
err
:=
c
.
Core
()
.
Pods
(
pod
.
Namespace
)
.
Delete
(
pod
.
Name
,
&
api
.
DeleteOptions
{
GracePeriodSeconds
:
&
zero
})
...
...
@@ -784,6 +759,18 @@ func (nc *NodeController) tryUpdateNodeStatus(node *api.Node) (time.Duration, ap
return
gracePeriod
,
lastReadyCondition
,
readyCondition
,
err
}
// returns true if the provided node still has pods scheduled to it, or an error if
// the server could not be contacted.
func
(
nc
*
NodeController
)
hasPods
(
nodeName
string
)
(
bool
,
error
)
{
selector
:=
fields
.
OneTermEqualSelector
(
api
.
PodHostField
,
nodeName
)
options
:=
api
.
ListOptions
{
FieldSelector
:
selector
}
pods
,
err
:=
nc
.
kubeClient
.
Core
()
.
Pods
(
api
.
NamespaceAll
)
.
List
(
options
)
if
err
!=
nil
{
return
false
,
err
}
return
len
(
pods
.
Items
)
>
0
,
nil
}
// evictPods queues an eviction for the provided node name, and returns false if the node is already
// queued for eviction.
func
(
nc
*
NodeController
)
evictPods
(
nodeName
string
)
bool
{
...
...
pkg/controller/node/nodecontroller_test.go
View file @
da0a72f2
...
...
@@ -1116,48 +1116,6 @@ func TestCheckPod(t *testing.T) {
}
}
func
TestCleanupOrphanedPods
(
t
*
testing
.
T
)
{
newPod
:=
func
(
name
,
node
string
)
api
.
Pod
{
return
api
.
Pod
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
name
,
},
Spec
:
api
.
PodSpec
{
NodeName
:
node
,
},
}
}
pods
:=
[]
api
.
Pod
{
newPod
(
"a"
,
"foo"
),
newPod
(
"b"
,
"bar"
),
newPod
(
"c"
,
"gone"
),
}
nc
:=
NewNodeController
(
nil
,
nil
,
0
,
nil
,
nil
,
0
,
0
,
0
,
nil
,
false
)
nc
.
nodeStore
.
Store
.
Add
(
newNode
(
"foo"
))
nc
.
nodeStore
.
Store
.
Add
(
newNode
(
"bar"
))
for
_
,
pod
:=
range
pods
{
p
:=
pod
nc
.
podStore
.
Store
.
Add
(
&
p
)
}
var
deleteCalls
int
var
deletedPodName
string
nc
.
forcefullyDeletePod
=
func
(
p
*
api
.
Pod
)
error
{
deleteCalls
++
deletedPodName
=
p
.
ObjectMeta
.
Name
return
nil
}
nc
.
cleanupOrphanedPods
()
if
deleteCalls
!=
1
{
t
.
Fatalf
(
"expected one delete, got: %v"
,
deleteCalls
)
}
if
deletedPodName
!=
"c"
{
t
.
Fatalf
(
"expected deleted pod name to be 'c', but got: %q"
,
deletedPodName
)
}
}
func
newNode
(
name
string
)
*
api
.
Node
{
return
&
api
.
Node
{
ObjectMeta
:
api
.
ObjectMeta
{
Name
:
name
},
...
...
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