Prevent scheduler from crashing infinitely if apiserver is unreachable

This commit is contained in:
Sam Ghods 2014-10-06 19:24:05 -07:00
parent 65b4247892
commit 16641757ef
2 changed files with 7 additions and 5 deletions

View File

@ -58,7 +58,10 @@ func main() {
go http.ListenAndServe(net.JoinHostPort(address.String(), strconv.Itoa(*port)), nil)
configFactory := &factory.ConfigFactory{Client: kubeClient}
config := configFactory.Create()
config, err := configFactory.Create()
if err != nil {
glog.Fatalf("Can't create scheduler config: %v", err)
}
s := scheduler.New(config)
s.Run()

View File

@ -42,7 +42,7 @@ type ConfigFactory struct {
}
// Create creates a scheduler and all support functions.
func (factory *ConfigFactory) Create() *scheduler.Config {
func (factory *ConfigFactory) Create() (*scheduler.Config, error) {
// Watch and queue pods that need scheduling.
podQueue := cache.NewFIFO()
cache.NewReflector(factory.createUnassignedPodLW(), &api.Pod{}, podQueue).Run()
@ -66,8 +66,7 @@ func (factory *ConfigFactory) Create() *scheduler.Config {
nodes, err := factory.Client.ListMinions()
if err != nil {
glog.Errorf("failed to obtain minion information, aborting")
return nil
return nil, err
}
algo := algorithm.NewGenericScheduler(
[]algorithm.FitPredicate{
@ -98,7 +97,7 @@ func (factory *ConfigFactory) Create() *scheduler.Config {
return pod
},
Error: factory.makeDefaultErrorFunc(&podBackoff, podQueue),
}
}, nil
}
type listWatch struct {