Add more unresolvable conditions to optimize preemption logic

pull/8/head
Bobby (Babak) Salamat 2018-06-11 16:39:00 -07:00
parent 5e9a5659b7
commit fab26e470c
1 changed files with 8 additions and 1 deletions

View File

@ -986,11 +986,19 @@ func nodesWherePreemptionMightHelp(nodes []*v1.Node, failedPredicatesMap FailedP
switch failedPredicate { switch failedPredicate {
case case
predicates.ErrNodeSelectorNotMatch, predicates.ErrNodeSelectorNotMatch,
predicates.ErrPodAffinityRulesNotMatch,
predicates.ErrPodNotMatchHostName, predicates.ErrPodNotMatchHostName,
predicates.ErrTaintsTolerationsNotMatch, predicates.ErrTaintsTolerationsNotMatch,
predicates.ErrNodeLabelPresenceViolated, predicates.ErrNodeLabelPresenceViolated,
// Node conditions won't change when scheduler simulates removal of preemption victims.
// So, it is pointless to try nodes that have not been able to host the pod due to node
// conditions. These include ErrNodeNotReady, ErrNodeUnderPIDPressure, ErrNodeUnderMemoryPressure, ....
predicates.ErrNodeNotReady, predicates.ErrNodeNotReady,
predicates.ErrNodeNetworkUnavailable, predicates.ErrNodeNetworkUnavailable,
predicates.ErrNodeUnderDiskPressure,
predicates.ErrNodeUnderPIDPressure,
predicates.ErrNodeUnderMemoryPressure,
predicates.ErrNodeOutOfDisk,
predicates.ErrNodeUnschedulable, predicates.ErrNodeUnschedulable,
predicates.ErrNodeUnknownCondition, predicates.ErrNodeUnknownCondition,
predicates.ErrVolumeZoneConflict, predicates.ErrVolumeZoneConflict,
@ -998,7 +1006,6 @@ func nodesWherePreemptionMightHelp(nodes []*v1.Node, failedPredicatesMap FailedP
predicates.ErrVolumeBindConflict: predicates.ErrVolumeBindConflict:
unresolvableReasonExist = true unresolvableReasonExist = true
break break
// TODO(bsalamat): Please add affinity failure cases once we have specific affinity failure errors.
} }
} }
if !found || !unresolvableReasonExist { if !found || !unresolvableReasonExist {