Skip to content

Commit 91dd84c

Browse files
authored
Merge pull request #10763 from fabriziopandini/deprioritize-unknown-nodehalthy-for-deletion
🌱 Deprioritize unknown NodeHealthy conditions for deletion
2 parents 89624b5 + 75e07c1 commit 91dd84c

File tree

2 files changed

+35
-9
lines changed

2 files changed

+35
-9
lines changed

internal/controllers/machineset/machineset_delete_policy.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,9 @@ func isMachineHealthy(machine *clusterv1.Machine) bool {
146146
if machine.Status.FailureReason != nil || machine.Status.FailureMessage != nil {
147147
return false
148148
}
149+
// Note: for the sake of prioritization, we are not making any assumption about Health when ConditionUnknown.
149150
nodeHealthyCondition := conditions.Get(machine, clusterv1.MachineNodeHealthyCondition)
150-
if nodeHealthyCondition != nil && nodeHealthyCondition.Status != corev1.ConditionTrue {
151+
if nodeHealthyCondition != nil && nodeHealthyCondition.Status == corev1.ConditionFalse {
151152
return false
152153
}
153154
healthCheckCondition := conditions.Get(machine, clusterv1.MachineHealthCheckSucceededCondition)

internal/controllers/machineset/machineset_delete_policy_test.go

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func TestMachineToDelete(t *testing.T) {
6868
},
6969
},
7070
}
71-
healthyCheckConditionFalseMachine := &clusterv1.Machine{
71+
healthCheckSucceededConditionFalseMachine := &clusterv1.Machine{
7272
Status: clusterv1.MachineStatus{
7373
NodeRef: nodeRef,
7474
Conditions: clusterv1.Conditions{
@@ -79,6 +79,17 @@ func TestMachineToDelete(t *testing.T) {
7979
},
8080
},
8181
}
82+
healthCheckSucceededConditionUnknownMachine := &clusterv1.Machine{
83+
Status: clusterv1.MachineStatus{
84+
NodeRef: nodeRef,
85+
Conditions: clusterv1.Conditions{
86+
{
87+
Type: clusterv1.MachineHealthCheckSucceededCondition,
88+
Status: corev1.ConditionUnknown,
89+
},
90+
},
91+
},
92+
}
8293

8394
tests := []struct {
8495
desc string
@@ -230,19 +241,31 @@ func TestMachineToDelete(t *testing.T) {
230241
healthyMachine,
231242
},
232243
expect: []*clusterv1.Machine{
233-
nodeHealthyConditionUnknownMachine,
244+
healthyMachine,
234245
},
235246
},
236247
{
237-
desc: "func=randomDeletePolicy, NodeHealthyConditionFalseMachine, diff=1",
248+
desc: "func=randomDeletePolicy, HealthCheckSucceededConditionFalseMachine, diff=1",
238249
diff: 1,
239250
machines: []*clusterv1.Machine{
240251
healthyMachine,
241-
healthyCheckConditionFalseMachine,
252+
healthCheckSucceededConditionFalseMachine,
242253
healthyMachine,
243254
},
244255
expect: []*clusterv1.Machine{
245-
healthyCheckConditionFalseMachine,
256+
healthCheckSucceededConditionFalseMachine,
257+
},
258+
},
259+
{
260+
desc: "func=randomDeletePolicy, HealthCheckSucceededConditionUnknownMachine, diff=1",
261+
diff: 1,
262+
machines: []*clusterv1.Machine{
263+
healthyMachine,
264+
healthCheckSucceededConditionUnknownMachine,
265+
healthyMachine,
266+
},
267+
expect: []*clusterv1.Machine{
268+
healthyMachine,
246269
},
247270
},
248271
}
@@ -383,9 +406,10 @@ func TestMachineNewestDelete(t *testing.T) {
383406
desc: "func=newestDeletePriority, diff=1 (nodeHealthyConditionUnknownMachine)",
384407
diff: 1,
385408
machines: []*clusterv1.Machine{
409+
// nodeHealthyConditionUnknownMachine is not considered unhealthy with unknown condition.
386410
secondNewest, oldest, secondOldest, newest, nodeHealthyConditionUnknownMachine,
387411
},
388-
expect: []*clusterv1.Machine{nodeHealthyConditionUnknownMachine},
412+
expect: []*clusterv1.Machine{newest},
389413
},
390414
}
391415

@@ -546,7 +570,8 @@ func TestMachineOldestDelete(t *testing.T) {
546570
machines: []*clusterv1.Machine{
547571
empty, secondNewest, oldest, secondOldest, newest, nodeHealthyConditionUnknownMachine,
548572
},
549-
expect: []*clusterv1.Machine{nodeHealthyConditionUnknownMachine},
573+
// nodeHealthyConditionUnknownMachine is not considered unhealthy with unknown condition.
574+
expect: []*clusterv1.Machine{oldest},
550575
},
551576
// these two cases ensures the mustDeleteMachine is always picked regardless of the machine names.
552577
{
@@ -726,7 +751,7 @@ func TestIsMachineHealthy(t *testing.T) {
726751
},
727752
},
728753
},
729-
expect: false,
754+
expect: true,
730755
},
731756
{
732757
desc: "when all requirements are met for node to be healthy",

0 commit comments

Comments
 (0)