Unverified Commit a3c14ecf authored by Kubernetes Prow Robot's avatar Kubernetes Prow Robot Committed by GitHub

Merge pull request #73606 from krzysztof-jastrzebski/daemonsets

Deleting pods assigned to not existing nodes only if
parents 1b741f4c 0087af78
...@@ -964,8 +964,11 @@ func (dsc *DaemonSetsController) manage(ds *apps.DaemonSet, hash string) error { ...@@ -964,8 +964,11 @@ func (dsc *DaemonSetsController) manage(ds *apps.DaemonSet, hash string) error {
failedPodsObserved += failedPodsObservedOnNode failedPodsObserved += failedPodsObservedOnNode
} }
// Remove pods assigned to not existing nodes. // Remove pods assigned to not existing nodes when daemonset pods are scheduled by default scheduler.
podsToDelete = append(podsToDelete, getPodsWithoutNode(nodeList, nodeToDaemonPods)...) // If node doesn't exist then pods are never scheduled and can't be deleted by PodGCController.
if utilfeature.DefaultFeatureGate.Enabled(features.ScheduleDaemonSetPods) {
podsToDelete = append(podsToDelete, getPodsWithoutNode(nodeList, nodeToDaemonPods)...)
}
// Label new pods using the hash label value of the current history when creating them // Label new pods using the hash label value of the current history when creating them
if err = dsc.syncNodes(ds, podsToDelete, nodesNeedingDaemonPods, hash); err != nil { if err = dsc.syncNodes(ds, podsToDelete, nodesNeedingDaemonPods, hash); err != nil {
...@@ -1529,8 +1532,7 @@ func failedPodsBackoffKey(ds *apps.DaemonSet, nodeName string) string { ...@@ -1529,8 +1532,7 @@ func failedPodsBackoffKey(ds *apps.DaemonSet, nodeName string) string {
} }
// getPodsWithoutNode returns list of pods assigned to not existing nodes. // getPodsWithoutNode returns list of pods assigned to not existing nodes.
func getPodsWithoutNode( func getPodsWithoutNode(runningNodesList []*v1.Node, nodeToDaemonPods map[string][]*v1.Pod) []string {
runningNodesList []*v1.Node, nodeToDaemonPods map[string][]*v1.Pod) []string {
var results []string var results []string
isNodeRunning := make(map[string]bool) isNodeRunning := make(map[string]bool)
for _, node := range runningNodesList { for _, node := range runningNodesList {
......
...@@ -2461,7 +2461,11 @@ func TestDeletePodForNotExistingNode(t *testing.T) { ...@@ -2461,7 +2461,11 @@ func TestDeletePodForNotExistingNode(t *testing.T) {
addNodes(manager.nodeStore, 0, 1, nil) addNodes(manager.nodeStore, 0, 1, nil)
addPods(manager.podStore, "node-0", simpleDaemonSetLabel, ds, 1) addPods(manager.podStore, "node-0", simpleDaemonSetLabel, ds, 1)
addPods(manager.podStore, "node-1", simpleDaemonSetLabel, ds, 1) addPods(manager.podStore, "node-1", simpleDaemonSetLabel, ds, 1)
syncAndValidateDaemonSets(t, manager, ds, podControl, 0, 1, 0) if f {
syncAndValidateDaemonSets(t, manager, ds, podControl, 0, 1, 0)
} else {
syncAndValidateDaemonSets(t, manager, ds, podControl, 0, 0, 0)
}
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment