diff --git a/plugin/pkg/scheduler/generic_scheduler.go b/plugin/pkg/scheduler/generic_scheduler.go index 6de52d7c6a6..c9f5453d18e 100644 --- a/plugin/pkg/scheduler/generic_scheduler.go +++ b/plugin/pkg/scheduler/generic_scheduler.go @@ -41,12 +41,15 @@ var ErrNoNodesAvailable = fmt.Errorf("no nodes available to schedule pods") // implementation of the error interface func (f *FitError) Error() string { - predicates := util.NewStringSet() + var reason string + // We iterate over all nodes for logging purposes, even though we only return one reason from one node for node, predicateList := range f.FailedPredicates { - predicates = predicates.Union(predicateList) glog.Infof("failed to find fit for pod %v on node %s: %s", f.Pod.Name, node, strings.Join(predicateList.List(), ",")) + if len(reason) == 0 { + reason, _ = predicateList.PopAny() + } } - return fmt.Sprintf("For each of these fitness predicates, pod %v failed on at least one node: %v.", f.Pod.Name, strings.Join(predicates.List(), ",")) + return fmt.Sprintf("Failed for reason %s and possibly others", reason) } type genericScheduler struct { diff --git a/plugin/pkg/scheduler/scheduler.go b/plugin/pkg/scheduler/scheduler.go index ac56c2461fb..dd25412d417 100644 --- a/plugin/pkg/scheduler/scheduler.go +++ b/plugin/pkg/scheduler/scheduler.go @@ -125,7 +125,7 @@ func (s *Scheduler) scheduleOne() { metrics.SchedulingAlgorithmLatency.Observe(metrics.SinceInMicroseconds(start)) if err != nil { glog.V(1).Infof("Failed to schedule: %v", pod) - s.config.Recorder.Eventf(pod, "failedScheduling", "Error scheduling: %v", err) + s.config.Recorder.Eventf(pod, "failedScheduling", "%v", err) s.config.Error(pod, err) return }