From 8f87e71e0cc3a2b714291ecd7210dfd8f4de33d6 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Thu, 13 Dec 2018 00:31:46 -0800 Subject: [PATCH] cleanup logic related with OutOfDisk - cleanup OOD logic in scheduling and node controller - update comments and testcases --- .../node_lifecycle_controller.go | 7 +- .../node_lifecycle_controller_test.go | 126 +----------------- pkg/features/kube_features.go | 2 +- pkg/scheduler/algorithm/predicates/error.go | 2 - .../algorithm/predicates/predicates.go | 5 +- .../algorithm/predicates/predicates_test.go | 36 +---- pkg/scheduler/api/well_known_labels.go | 5 - pkg/scheduler/core/generic_scheduler.go | 1 - pkg/scheduler/core/generic_scheduler_test.go | 5 +- 9 files changed, 15 insertions(+), 174 deletions(-) diff --git a/pkg/controller/nodelifecycle/node_lifecycle_controller.go b/pkg/controller/nodelifecycle/node_lifecycle_controller.go index cc068c7a78..9c79a71f3d 100644 --- a/pkg/controller/nodelifecycle/node_lifecycle_controller.go +++ b/pkg/controller/nodelifecycle/node_lifecycle_controller.go @@ -95,9 +95,6 @@ var ( v1.NodeMemoryPressure: { v1.ConditionTrue: schedulerapi.TaintNodeMemoryPressure, }, - v1.NodeOutOfDisk: { - v1.ConditionTrue: schedulerapi.TaintNodeOutOfDisk, - }, v1.NodeDiskPressure: { v1.ConditionTrue: schedulerapi.TaintNodeDiskPressure, }, @@ -114,7 +111,6 @@ var ( schedulerapi.TaintNodeUnreachable: v1.NodeReady, schedulerapi.TaintNodeNetworkUnavailable: v1.NodeNetworkUnavailable, schedulerapi.TaintNodeMemoryPressure: v1.NodeMemoryPressure, - schedulerapi.TaintNodeOutOfDisk: v1.NodeOutOfDisk, schedulerapi.TaintNodeDiskPressure: v1.NodeDiskPressure, schedulerapi.TaintNodePIDPressure: v1.NodePIDPressure, } @@ -229,7 +225,7 @@ type Controller struct { useTaintBasedEvictions bool // if set to true, NodeController will taint Nodes based on its condition for 'NetworkUnavailable', - // 'MemoryPressure', 'OutOfDisk' and 'DiskPressure'. + // 'MemoryPressure', 'PIDPressure' and 'DiskPressure'. taintNodeByCondition bool nodeUpdateQueue workqueue.Interface @@ -921,7 +917,6 @@ func (nc *Controller) tryUpdateNodeHealth(node *v1.Node) (time.Duration, v1.Node // remaining node conditions should also be set to Unknown remainingNodeConditionTypes := []v1.NodeConditionType{ - v1.NodeOutOfDisk, v1.NodeMemoryPressure, v1.NodeDiskPressure, v1.NodePIDPressure, diff --git a/pkg/controller/nodelifecycle/node_lifecycle_controller_test.go b/pkg/controller/nodelifecycle/node_lifecycle_controller_test.go index 865db15321..f95710a13a 100644 --- a/pkg/controller/nodelifecycle/node_lifecycle_controller_test.go +++ b/pkg/controller/nodelifecycle/node_lifecycle_controller_test.go @@ -1423,14 +1423,6 @@ func TestMonitorNodeHealthUpdateStatus(t *testing.T) { LastHeartbeatTime: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC), LastTransitionTime: fakeNow, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - Reason: "NodeStatusNeverUpdated", - Message: "Kubelet never posted node status.", - LastHeartbeatTime: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC), - LastTransitionTime: fakeNow, - }, { Type: v1.NodeMemoryPressure, Status: v1.ConditionUnknown, @@ -1498,13 +1490,6 @@ func TestMonitorNodeHealthUpdateStatus(t *testing.T) { LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionFalse, - // Node status hasn't been updated for 1hr. - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, }, Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceCPU): resource.MustParse("10"), @@ -1526,13 +1511,6 @@ func TestMonitorNodeHealthUpdateStatus(t *testing.T) { LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionFalse, - // Node status hasn't been updated for 1hr. - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, }, Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceCPU): resource.MustParse("10"), @@ -1555,14 +1533,6 @@ func TestMonitorNodeHealthUpdateStatus(t *testing.T) { LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), LastTransitionTime: metav1.Time{Time: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC).Add(time.Hour)}, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - Reason: "NodeStatusUnknown", - Message: "Kubelet stopped posting node status.", - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Time{Time: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC).Add(time.Hour)}, - }, { Type: v1.NodeMemoryPressure, Status: v1.ConditionUnknown, @@ -1770,14 +1740,6 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastHeartbeatTime: nodeCreationTime, LastTransitionTime: fakeNow, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - Reason: "NodeStatusNeverUpdated", - Message: "Kubelet never posted node status.", - LastHeartbeatTime: nodeCreationTime, - LastTransitionTime: fakeNow, - }, { Type: v1.NodeMemoryPressure, Status: v1.ConditionUnknown, @@ -1872,14 +1834,6 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastHeartbeatTime: nodeCreationTime, LastTransitionTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - Reason: "NodeStatusNeverUpdated", - Message: "Kubelet never posted node status.", - LastHeartbeatTime: nodeCreationTime, - LastTransitionTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, - }, { Type: v1.NodeMemoryPressure, Status: v1.ConditionUnknown, @@ -1930,7 +1884,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, @@ -1958,7 +1912,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, @@ -1985,7 +1939,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, @@ -2020,7 +1974,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, @@ -2048,7 +2002,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, LastTransitionTime: fakeNow, @@ -2075,7 +2029,7 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastTransitionTime: fakeNow, }, { - Type: v1.NodeOutOfDisk, + Type: v1.NodeDiskPressure, Status: v1.ConditionFalse, LastHeartbeatTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, LastTransitionTime: fakeNow, @@ -2109,12 +2063,6 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionFalse, - LastHeartbeatTime: fakeNow, - LastTransitionTime: fakeNow, - }, }, Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceCPU): resource.MustParse("10"), @@ -2137,12 +2085,6 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastHeartbeatTime: fakeNow, LastTransitionTime: fakeNow, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionFalse, - LastHeartbeatTime: fakeNow, - LastTransitionTime: fakeNow, - }, }, Capacity: v1.ResourceList{ v1.ResourceName(v1.ResourceCPU): resource.MustParse("10"), @@ -2166,14 +2108,6 @@ func TestMonitorNodeHealthUpdateNodeAndPodStatusWithLease(t *testing.T) { LastHeartbeatTime: fakeNow, LastTransitionTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - Reason: "NodeStatusUnknown", - Message: "Kubelet stopped posting node status.", - LastHeartbeatTime: fakeNow, - LastTransitionTime: metav1.Time{Time: fakeNow.Add(time.Hour)}, - }, { Type: v1.NodeMemoryPressure, Status: v1.ConditionUnknown, @@ -2759,10 +2693,6 @@ func TestTaintsNodeByCondition(t *testing.T) { nodeController.now = func() metav1.Time { return fakeNow } nodeController.recorder = testutil.NewFakeRecorder() - outOfDiskTaint := &v1.Taint{ - Key: schedulerapi.TaintNodeOutOfDisk, - Effect: v1.TaintEffectNoSchedule, - } networkUnavailableTaint := &v1.Taint{ Key: schedulerapi.TaintNodeNetworkUnavailable, Effect: v1.TaintEffectNoSchedule, @@ -2812,7 +2742,7 @@ func TestTaintsNodeByCondition(t *testing.T) { ExpectedTaints: []*v1.Taint{networkUnavailableTaint}, }, { - Name: "NetworkUnavailable and OutOfDisk are true", + Name: "NetworkUnavailable is true", Node: &v1.Node{ ObjectMeta: metav1.ObjectMeta{ Name: "node0", @@ -2836,48 +2766,6 @@ func TestTaintsNodeByCondition(t *testing.T) { LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionTrue, - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, - }, - }, - }, - ExpectedTaints: []*v1.Taint{networkUnavailableTaint, outOfDiskTaint}, - }, - { - Name: "NetworkUnavailable is true, OutOfDisk is unknown", - Node: &v1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: "node0", - CreationTimestamp: metav1.Date(2012, 1, 1, 0, 0, 0, 0, time.UTC), - Labels: map[string]string{ - kubeletapis.LabelZoneRegion: "region1", - kubeletapis.LabelZoneFailureDomain: "zone1", - }, - }, - Status: v1.NodeStatus{ - Conditions: []v1.NodeCondition{ - { - Type: v1.NodeReady, - Status: v1.ConditionTrue, - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, - { - Type: v1.NodeNetworkUnavailable, - Status: v1.ConditionTrue, - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, - { - Type: v1.NodeOutOfDisk, - Status: v1.ConditionUnknown, - LastHeartbeatTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - LastTransitionTime: metav1.Date(2015, 1, 1, 12, 0, 0, 0, time.UTC), - }, }, }, }, diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index 785b9d4f7c..65e4900007 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -128,7 +128,7 @@ const ( // beta: v1.12 // // Taint nodes based on their condition status for 'NetworkUnavailable', - // 'MemoryPressure', 'OutOfDisk' and 'DiskPressure'. + // 'MemoryPressure', 'PIDPressure' and 'DiskPressure'. TaintNodesByCondition utilfeature.Feature = "TaintNodesByCondition" // owner: @jsafrane diff --git a/pkg/scheduler/algorithm/predicates/error.go b/pkg/scheduler/algorithm/predicates/error.go index 1e1cbcaa9f..5cf1a2b11b 100644 --- a/pkg/scheduler/algorithm/predicates/error.go +++ b/pkg/scheduler/algorithm/predicates/error.go @@ -63,8 +63,6 @@ var ( ErrNodeUnderDiskPressure = newPredicateFailureError("NodeUnderDiskPressure", "node(s) had disk pressure") // ErrNodeUnderPIDPressure is used for NodeUnderPIDPressure predicate error. ErrNodeUnderPIDPressure = newPredicateFailureError("NodeUnderPIDPressure", "node(s) had pid pressure") - // ErrNodeOutOfDisk is used for NodeOutOfDisk predicate error. - ErrNodeOutOfDisk = newPredicateFailureError("NodeOutOfDisk", "node(s) were out of disk space") // ErrNodeNotReady is used for NodeNotReady predicate error. ErrNodeNotReady = newPredicateFailureError("NodeNotReady", "node(s) were not ready") // ErrNodeNetworkUnavailable is used for NodeNetworkUnavailable predicate error. diff --git a/pkg/scheduler/algorithm/predicates/predicates.go b/pkg/scheduler/algorithm/predicates/predicates.go index 3e3bd5010e..78f99489e6 100644 --- a/pkg/scheduler/algorithm/predicates/predicates.go +++ b/pkg/scheduler/algorithm/predicates/predicates.go @@ -1563,7 +1563,7 @@ func CheckNodePIDPressurePredicate(pod *v1.Pod, meta algorithm.PredicateMetadata return true, nil, nil } -// CheckNodeConditionPredicate checks if a pod can be scheduled on a node reporting out of disk, +// CheckNodeConditionPredicate checks if a pod can be scheduled on a node reporting // network unavailable and not ready condition. Only node conditions are accounted in this predicate. func CheckNodeConditionPredicate(pod *v1.Pod, meta algorithm.PredicateMetadata, nodeInfo *schedulernodeinfo.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { reasons := []algorithm.PredicateFailureReason{} @@ -1576,12 +1576,9 @@ func CheckNodeConditionPredicate(pod *v1.Pod, meta algorithm.PredicateMetadata, for _, cond := range node.Status.Conditions { // We consider the node for scheduling only when its: // - NodeReady condition status is ConditionTrue, - // - NodeOutOfDisk condition status is ConditionFalse, // - NodeNetworkUnavailable condition status is ConditionFalse. if cond.Type == v1.NodeReady && cond.Status != v1.ConditionTrue { reasons = append(reasons, ErrNodeNotReady) - } else if cond.Type == v1.NodeOutOfDisk && cond.Status != v1.ConditionFalse { - reasons = append(reasons, ErrNodeOutOfDisk) } else if cond.Type == v1.NodeNetworkUnavailable && cond.Status != v1.ConditionFalse { reasons = append(reasons, ErrNodeNetworkUnavailable) } diff --git a/pkg/scheduler/algorithm/predicates/predicates_test.go b/pkg/scheduler/algorithm/predicates/predicates_test.go index 39f6e83dc7..2c3caf0b3a 100644 --- a/pkg/scheduler/algorithm/predicates/predicates_test.go +++ b/pkg/scheduler/algorithm/predicates/predicates_test.go @@ -4521,47 +4521,17 @@ func TestNodeConditionPredicate(t *testing.T) { schedulable: false, }, { - name: "node3 ignored - node out of disk", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node3"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeOutOfDisk, Status: v1.ConditionTrue}}}}, - schedulable: false, - }, - { - name: "node4 considered", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node4"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeOutOfDisk, Status: v1.ConditionFalse}}}}, - schedulable: true, - }, - { - name: "node5 ignored - node out of disk", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node5"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}, {Type: v1.NodeOutOfDisk, Status: v1.ConditionTrue}}}}, - schedulable: false, - }, - { - name: "node6 considered", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node6"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionTrue}, {Type: v1.NodeOutOfDisk, Status: v1.ConditionFalse}}}}, - schedulable: true, - }, - { - name: "node7 ignored - node out of disk, node not Ready", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node7"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}, {Type: v1.NodeOutOfDisk, Status: v1.ConditionTrue}}}}, - schedulable: false, - }, - { - name: "node8 ignored - node not Ready", - node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node8"}, Status: v1.NodeStatus{Conditions: []v1.NodeCondition{{Type: v1.NodeReady, Status: v1.ConditionFalse}, {Type: v1.NodeOutOfDisk, Status: v1.ConditionFalse}}}}, - schedulable: false, - }, - { - name: "node9 ignored - node unschedulable", + name: "node3 ignored - node unschedulable", node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node9"}, Spec: v1.NodeSpec{Unschedulable: true}}, schedulable: false, }, { - name: "node10 considered", + name: "node4 considered", node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node10"}, Spec: v1.NodeSpec{Unschedulable: false}}, schedulable: true, }, { - name: "node11 considered", + name: "node5 considered", node: &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node11"}}, schedulable: true, }, diff --git a/pkg/scheduler/api/well_known_labels.go b/pkg/scheduler/api/well_known_labels.go index afe64dd50f..7c1d707830 100644 --- a/pkg/scheduler/api/well_known_labels.go +++ b/pkg/scheduler/api/well_known_labels.go @@ -45,11 +45,6 @@ const ( // and removed when node becomes scheduable. TaintNodeUnschedulable = "node.kubernetes.io/unschedulable" - // TaintNodeOutOfDisk will be added when node becomes out of disk - // and feature-gate for TaintNodesByCondition flag is enabled, - // and removed when node has enough disk. - TaintNodeOutOfDisk = "node.kubernetes.io/out-of-disk" - // TaintNodeMemoryPressure will be added when node has memory pressure // and feature-gate for TaintNodesByCondition flag is enabled, // and removed when node has enough memory. diff --git a/pkg/scheduler/core/generic_scheduler.go b/pkg/scheduler/core/generic_scheduler.go index c7bbbe47b8..b3ad71c727 100644 --- a/pkg/scheduler/core/generic_scheduler.go +++ b/pkg/scheduler/core/generic_scheduler.go @@ -1061,7 +1061,6 @@ func nodesWherePreemptionMightHelp(nodes []*v1.Node, failedPredicatesMap FailedP predicates.ErrNodeUnderDiskPressure, predicates.ErrNodeUnderPIDPressure, predicates.ErrNodeUnderMemoryPressure, - predicates.ErrNodeOutOfDisk, predicates.ErrNodeUnschedulable, predicates.ErrNodeUnknownCondition, predicates.ErrVolumeZoneConflict, diff --git a/pkg/scheduler/core/generic_scheduler_test.go b/pkg/scheduler/core/generic_scheduler_test.go index fc168e3b13..89ec006790 100644 --- a/pkg/scheduler/core/generic_scheduler_test.go +++ b/pkg/scheduler/core/generic_scheduler_test.go @@ -1212,7 +1212,7 @@ func TestNodesWherePreemptionMightHelp(t *testing.T) { { name: "Mix of failed predicates works fine", failedPredMap: FailedPredicateMap{ - "machine1": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeSelectorNotMatch, algorithmpredicates.ErrNodeOutOfDisk, algorithmpredicates.NewInsufficientResourceError(v1.ResourceMemory, 1000, 500, 300)}, + "machine1": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeSelectorNotMatch, algorithmpredicates.ErrNodeUnderDiskPressure, algorithmpredicates.NewInsufficientResourceError(v1.ResourceMemory, 1000, 500, 300)}, "machine2": []algorithm.PredicateFailureReason{algorithmpredicates.ErrPodNotMatchHostName, algorithmpredicates.ErrDiskConflict}, "machine3": []algorithm.PredicateFailureReason{algorithmpredicates.NewInsufficientResourceError(v1.ResourceMemory, 1000, 600, 400)}, "machine4": []algorithm.PredicateFailureReason{}, @@ -1225,9 +1225,8 @@ func TestNodesWherePreemptionMightHelp(t *testing.T) { "machine1": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeUnderDiskPressure}, "machine2": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeUnderPIDPressure}, "machine3": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeUnderMemoryPressure}, - "machine4": []algorithm.PredicateFailureReason{algorithmpredicates.ErrNodeOutOfDisk}, }, - expected: map[string]bool{}, + expected: map[string]bool{"machine4": true}, }, { name: "Node condition errors and ErrNodeUnknownCondition should be considered unresolvable",