From 990b1665df638703529edaee0bdfe938e2b69ff9 Mon Sep 17 00:00:00 2001 From: Miguel Angel Ajo Date: Thu, 27 Jan 2022 18:24:48 +0100 Subject: [PATCH] Make kube-scheduler Service return errors for healthcheck Signed-off-by: Miguel Angel Ajo --- pkg/controllers/kube-scheduler.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pkg/controllers/kube-scheduler.go b/pkg/controllers/kube-scheduler.go index 8144d4375a..eccbb01173 100644 --- a/pkg/controllers/kube-scheduler.go +++ b/pkg/controllers/kube-scheduler.go @@ -17,6 +17,7 @@ package controllers import ( "context" + "errors" "fmt" "io/ioutil" "os" @@ -98,12 +99,14 @@ leaderElection: func (s *KubeScheduler) Run(ctx context.Context, ready chan<- struct{}, stopped chan<- struct{}) error { defer close(stopped) + errorChannel := make(chan error, 1) // run readiness check go func() { healthcheckStatus := util.RetryInsecureHttpsGet("https://127.0.0.1:10259/healthz") if healthcheckStatus != 200 { - klog.Fatalf("%s healthcheck failed", s.Name(), fmt.Errorf("kube-scheduler failed to start")) + klog.Errorf("%s healthcheck failed", s.Name(), fmt.Errorf("kube-scheduler failed to start")) + errorChannel <- errors.New("kube-scheduler healthcheck failed") } klog.Infof("%s is ready", s.Name()) @@ -115,9 +118,9 @@ func (s *KubeScheduler) Run(ctx context.Context, ready chan<- struct{}, stopped return err } - if err := kubescheduler.Run(ctx, cc, sched); err != nil { - return err - } + go func() { + errorChannel <- kubescheduler.Run(ctx, cc, sched) + }() - return ctx.Err() + return <-errorChannel }