mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-20 10:20:51 +00:00
Fixes and minor cleanups to pod (anti)affinity predicate
This commit is contained in:
parent
19795ea7c3
commit
15c492bb2e
@ -1074,14 +1074,13 @@ func getMatchingAntiAffinityTerms(pod *v1.Pod, nodeInfoMap map[string]*scheduler
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, term := range getPodAntiAffinityTerms(affinity.PodAntiAffinity) {
|
for _, term := range getPodAntiAffinityTerms(affinity.PodAntiAffinity) {
|
||||||
namespaces := priorityutil.GetNamespacesFromPodAffinityTerm(pod, &term)
|
namespaces := priorityutil.GetNamespacesFromPodAffinityTerm(existingPod, &term)
|
||||||
selector, err := metav1.LabelSelectorAsSelector(term.LabelSelector)
|
selector, err := metav1.LabelSelectorAsSelector(term.LabelSelector)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
catchError(err)
|
catchError(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
match := priorityutil.PodMatchesTermsNamespaceAndSelector(pod, namespaces, selector)
|
if priorityutil.PodMatchesTermsNamespaceAndSelector(pod, namespaces, selector) {
|
||||||
if match {
|
|
||||||
nodeResult = append(nodeResult, matchingPodAntiAffinityTerm{term: &term, node: node})
|
nodeResult = append(nodeResult, matchingPodAntiAffinityTerm{term: &term, node: node})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1109,8 +1108,7 @@ func (c *PodAffinityChecker) getMatchingAntiAffinityTerms(pod *v1.Pod, allPods [
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
match := priorityutil.PodMatchesTermsNamespaceAndSelector(pod, namespaces, selector)
|
if priorityutil.PodMatchesTermsNamespaceAndSelector(pod, namespaces, selector) {
|
||||||
if match {
|
|
||||||
result = append(result, matchingPodAntiAffinityTerm{term: &term, node: existingPodNode})
|
result = append(result, matchingPodAntiAffinityTerm{term: &term, node: existingPodNode})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1128,17 +1126,17 @@ func (c *PodAffinityChecker) satisfiesExistingPodsAntiAffinity(pod *v1.Pod, meta
|
|||||||
} else {
|
} else {
|
||||||
allPods, err := c.podLister.List(labels.Everything())
|
allPods, err := c.podLister.List(labels.Everything())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(10).Infof("Failed to get all pods, %+v", err)
|
glog.Errorf("Failed to get all pods, %+v", err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if matchingTerms, err = c.getMatchingAntiAffinityTerms(pod, allPods); err != nil {
|
if matchingTerms, err = c.getMatchingAntiAffinityTerms(pod, allPods); err != nil {
|
||||||
glog.V(10).Infof("Failed to get all terms that pod %+v matches, err: %+v", podName(pod), err)
|
glog.Errorf("Failed to get all terms that pod %+v matches, err: %+v", podName(pod), err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, term := range matchingTerms {
|
for _, term := range matchingTerms {
|
||||||
if len(term.term.TopologyKey) == 0 {
|
if len(term.term.TopologyKey) == 0 {
|
||||||
glog.V(10).Infof("Empty topologyKey is not allowed except for PreferredDuringScheduling pod anti-affinity")
|
glog.Error("Empty topologyKey is not allowed except for PreferredDuringScheduling pod anti-affinity")
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if priorityutil.NodesHaveSameTopologyKey(node, term.node, term.term.TopologyKey) {
|
if priorityutil.NodesHaveSameTopologyKey(node, term.node, term.term.TopologyKey) {
|
||||||
@ -1167,7 +1165,7 @@ func (c *PodAffinityChecker) satisfiesPodsAffinityAntiAffinity(pod *v1.Pod, node
|
|||||||
for _, term := range getPodAffinityTerms(affinity.PodAffinity) {
|
for _, term := range getPodAffinityTerms(affinity.PodAffinity) {
|
||||||
termMatches, matchingPodExists, err := c.anyPodMatchesPodAffinityTerm(pod, allPods, node, &term)
|
termMatches, matchingPodExists, err := c.anyPodMatchesPodAffinityTerm(pod, allPods, node, &term)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(10).Infof("Cannot schedule pod %+v onto node %v,because of PodAffinityTerm %v, err: %v",
|
glog.Errorf("Cannot schedule pod %+v onto node %v,because of PodAffinityTerm %v, err: %v",
|
||||||
podName(pod), node.Name, term, err)
|
podName(pod), node.Name, term, err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -1183,7 +1181,7 @@ func (c *PodAffinityChecker) satisfiesPodsAffinityAntiAffinity(pod *v1.Pod, node
|
|||||||
namespaces := priorityutil.GetNamespacesFromPodAffinityTerm(pod, &term)
|
namespaces := priorityutil.GetNamespacesFromPodAffinityTerm(pod, &term)
|
||||||
selector, err := metav1.LabelSelectorAsSelector(term.LabelSelector)
|
selector, err := metav1.LabelSelectorAsSelector(term.LabelSelector)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(10).Infof("Cannot parse selector on term %v for pod %v. Details %v",
|
glog.Errorf("Cannot parse selector on term %v for pod %v. Details %v",
|
||||||
term, podName(pod), err)
|
term, podName(pod), err)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user