mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-02 16:29:21 +00:00
Simplify FailedPredicateMap
This commit is contained in:
parent
b02f1bf667
commit
545bf184ef
@ -21,20 +21,18 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/util/errors"
|
"k8s.io/kubernetes/pkg/util/errors"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates"
|
||||||
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
|
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FailedPredicateMap map[string]sets.String
|
type FailedPredicateMap map[string]string
|
||||||
|
|
||||||
type FitError struct {
|
type FitError struct {
|
||||||
Pod *api.Pod
|
Pod *api.Pod
|
||||||
@ -47,8 +45,8 @@ var ErrNoNodesAvailable = fmt.Errorf("no nodes available to schedule pods")
|
|||||||
func (f *FitError) Error() string {
|
func (f *FitError) Error() string {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
buf.WriteString(fmt.Sprintf("pod (%s) failed to fit in any node\n", f.Pod.Name))
|
buf.WriteString(fmt.Sprintf("pod (%s) failed to fit in any node\n", f.Pod.Name))
|
||||||
for node, predicateList := range f.FailedPredicates {
|
for node, predicate := range f.FailedPredicates {
|
||||||
reason := fmt.Sprintf("fit failure on node (%s): %s\n", node, strings.Join(predicateList.List(), ","))
|
reason := fmt.Sprintf("fit failure on node (%s): %s\n", node, predicate)
|
||||||
buf.WriteString(reason)
|
buf.WriteString(reason)
|
||||||
}
|
}
|
||||||
return buf.String()
|
return buf.String()
|
||||||
@ -151,15 +149,12 @@ func findNodesThatFit(pod *api.Pod, nodeNameToInfo map[string]*schedulercache.No
|
|||||||
}
|
}
|
||||||
if !fit {
|
if !fit {
|
||||||
fits = false
|
fits = false
|
||||||
if _, found := failedPredicateMap[node.Name]; !found {
|
|
||||||
failedPredicateMap[node.Name] = sets.String{}
|
|
||||||
}
|
|
||||||
if re, ok := err.(*predicates.InsufficientResourceError); ok {
|
if re, ok := err.(*predicates.InsufficientResourceError); ok {
|
||||||
failedPredicateMap[node.Name].Insert(fmt.Sprintf("Insufficient %s", re.ResourceName))
|
failedPredicateMap[node.Name] = fmt.Sprintf("Insufficient %s", re.ResourceName)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if re, ok := err.(*predicates.PredicateFailureError); ok {
|
if re, ok := err.(*predicates.PredicateFailureError); ok {
|
||||||
failedPredicateMap[node.Name].Insert(re.PredicateName)
|
failedPredicateMap[node.Name] = re.PredicateName
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
err := fmt.Errorf("SchedulerPredicates failed due to %v, which is unexpected.", err)
|
err := fmt.Errorf("SchedulerPredicates failed due to %v, which is unexpected.", err)
|
||||||
|
@ -309,12 +309,12 @@ func TestFindFitAllError(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, node := range nodes {
|
for _, node := range nodes {
|
||||||
failures, found := predicateMap[node]
|
failure, found := predicateMap[node]
|
||||||
if !found {
|
if !found {
|
||||||
t.Errorf("failed to find node: %s in %v", node, predicateMap)
|
t.Errorf("failed to find node: %s in %v", node, predicateMap)
|
||||||
}
|
}
|
||||||
if len(failures) != 1 || !failures.Has("false") {
|
if failure != "false" {
|
||||||
t.Errorf("unexpected failures: %v", failures)
|
t.Errorf("unexpected failures: %v", failure)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -342,12 +342,12 @@ func TestFindFitSomeError(t *testing.T) {
|
|||||||
if node == pod.Name {
|
if node == pod.Name {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
failures, found := predicateMap[node]
|
failure, found := predicateMap[node]
|
||||||
if !found {
|
if !found {
|
||||||
t.Errorf("failed to find node: %s in %v", node, predicateMap)
|
t.Errorf("failed to find node: %s in %v", node, predicateMap)
|
||||||
}
|
}
|
||||||
if len(failures) != 1 || !failures.Has("false") {
|
if failure != "false" {
|
||||||
t.Errorf("unexpected failures: %v", failures)
|
t.Errorf("unexpected failures: %v", failure)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user