Skip to content

Commit f82455d

Browse files
authored
Merge pull request #136 from XenitAB/update-node-ttl
add: extra log output from node-ttl eviction process
2 parents b015acb + d4e764e commit f82455d

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

internal/ttl/ttl.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,28 +175,56 @@ func evictNode(ctx context.Context, client kubernetes.Interface, node *corev1.No
175175
ErrOut: io.Discard,
176176
Out: io.Discard,
177177
OnPodDeletedOrEvicted: func(pod *corev1.Pod, usingEviction bool) {
178-
log.Info("completed eviction", "pod", pod.Name)
178+
log.Info("completed eviction", "pod", pod.Name, "usingEviction", usingEviction)
179179
},
180180
}
181181

182-
// Retry to avoid large delays when API server hickups occur.
183182
err := retry.Do(func() error {
183+
log.Info("cordoning node", "node", node.Name)
184184
err := drain.RunCordonOrUncordon(helper, node, true)
185185
if err != nil {
186+
log.Error(err, "failed to cordon node", "node", node.Name)
186187
return fmt.Errorf("could not cordon node %s: %w", node.Name, err)
187188
}
189+
log.Info("draining node", "node", node.Name)
188190
err = drain.RunNodeDrain(helper, node.Name)
189191
if err != nil {
192+
log.Error(err, "failed to drain node", "node", node.Name)
190193
return fmt.Errorf("could not drain node %s: %w", node.Name, err)
191194
}
192-
// Wait for node to be deleted
195+
log.Info("drain completed", "node", node.Name)
196+
// After drain, log remaining pods (excluding DaemonSets and mirror pods)
197+
opts := metav1.ListOptions{FieldSelector: "spec.nodeName=" + node.Name}
198+
podList, perr := client.CoreV1().Pods("").List(ctx, opts)
199+
if perr != nil {
200+
log.Error(perr, "failed to list pods after drain", "node", node.Name)
201+
} else {
202+
remaining := 0
203+
for i := range podList.Items {
204+
pod := &podList.Items[i]
205+
if pod.DeletionTimestamp != nil {
206+
continue // pod is terminating
207+
}
208+
if _, isMirror := pod.Annotations["kubernetes.io/config.mirror"]; isMirror {
209+
continue // mirror pod
210+
}
211+
if controllerRef := metav1.GetControllerOf(pod); controllerRef != nil && controllerRef.Kind == "DaemonSet" {
212+
continue // DaemonSet pod
213+
}
214+
log.Info("pod still present after drain", "pod", pod.Name, "namespace", pod.Namespace)
215+
remaining++
216+
}
217+
log.Info("remaining pods after drain", "count", remaining, "node", node.Name)
218+
}
193219
return nil
194220
}, retry.OnRetry(func(n uint, err error) {
195221
log.Error(err, "retrying drain due to error", "attempt", n)
196222
}), retry.Attempts(5), retry.Delay(1*time.Second))
197223
if err != nil {
224+
log.Error(err, "eviction failed", "node", node.Name)
198225
return err
199226
}
227+
log.Info("eviction succeeded", "node", node.Name)
200228
return nil
201229
}
202230

0 commit comments

Comments
 (0)