Skip to content

Commit e37d94f

Browse files
committed
When UseAPIServerCacheToListPods is true, don't call kubectl's RunNodeDrain
1 parent 1aa3d7a commit e37d94f

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

pkg/node/node.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,18 @@ func (n Node) CordonAndDrain(nodeName string, reason string, recorder recorderIn
114114
if err != nil {
115115
return err
116116
}
117-
// Delete all pods on the node
118-
log.Info().Msg("Draining the node")
117+
// Be very careful here: in tests, nodeName and node.Name can be different, as
118+
// fetchKubernetesNode does some translation using the kubernetes.io/hostname label
119119
node, err := n.fetchKubernetesNode(nodeName)
120120
if err != nil {
121121
return err
122122
}
123+
var pods *corev1.PodList
124+
// Delete all pods on the node
125+
log.Info().Msg("Draining the node")
123126
// Emit events for all pods that will be evicted
124127
if recorder != nil {
125-
pods, err := n.fetchAllPods(nodeName)
128+
pods, err = n.fetchAllPods(node.Name)
126129
if err == nil {
127130
for _, pod := range pods.Items {
128131
podRef := &corev1.ObjectReference{
@@ -139,7 +142,14 @@ func (n Node) CordonAndDrain(nodeName string, reason string, recorder recorderIn
139142
}
140143
}
141144
}
142-
err = drain.RunNodeDrain(n.drainHelper, node.Name)
145+
if n.nthConfig.UseAPIServerCacheToListPods {
146+
if pods != nil {
147+
err = n.drainHelper.DeleteOrEvictPods(pods.Items)
148+
}
149+
} else {
150+
// RunNodeDrain does an etcd quorum-read to list all pods on this node
151+
err = drain.RunNodeDrain(n.drainHelper, node.Name)
152+
}
143153
if err != nil {
144154
return err
145155
}

0 commit comments

Comments
 (0)