mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
update scheduler to return structured errors instead of process exit
This commit is contained in:
parent
28f6b3fcc0
commit
539fc6ec95
@ -30,6 +30,7 @@ go_library(
|
|||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/server/healthz:go_default_library",
|
||||||
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
"//vendor/k8s.io/apiserver/pkg/util/feature:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/informers:go_default_library",
|
"//vendor/k8s.io/client-go/informers:go_default_library",
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/apiserver/pkg/server/healthz"
|
"k8s.io/apiserver/pkg/server/healthz"
|
||||||
|
|
||||||
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/client-go/informers"
|
"k8s.io/client-go/informers"
|
||||||
"k8s.io/client-go/tools/leaderelection"
|
"k8s.io/client-go/tools/leaderelection"
|
||||||
"k8s.io/client-go/tools/leaderelection/resourcelock"
|
"k8s.io/client-go/tools/leaderelection/resourcelock"
|
||||||
@ -103,14 +104,14 @@ func Run(s *options.SchedulerServer) error {
|
|||||||
informerFactory.WaitForCacheSync(stop)
|
informerFactory.WaitForCacheSync(stop)
|
||||||
controller.WaitForCacheSync("scheduler", stop, podInformer.Informer().HasSynced)
|
controller.WaitForCacheSync("scheduler", stop, podInformer.Informer().HasSynced)
|
||||||
|
|
||||||
run := func(_ <-chan struct{}) {
|
run := func(stopCh <-chan struct{}) {
|
||||||
sched.Run()
|
sched.Run()
|
||||||
select {}
|
<-stopCh
|
||||||
}
|
}
|
||||||
|
|
||||||
if !s.LeaderElection.LeaderElect {
|
if !s.LeaderElection.LeaderElect {
|
||||||
run(nil)
|
run(stop)
|
||||||
panic("unreachable")
|
return fmt.Errorf("finished without leader elect")
|
||||||
}
|
}
|
||||||
|
|
||||||
id, err := os.Hostname()
|
id, err := os.Hostname()
|
||||||
@ -127,23 +128,29 @@ func Run(s *options.SchedulerServer) error {
|
|||||||
EventRecorder: recorder,
|
EventRecorder: recorder,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatalf("error creating lock: %v", err)
|
return fmt.Errorf("error creating lock: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
leaderelection.RunOrDie(leaderelection.LeaderElectionConfig{
|
leaderElector, err := leaderelection.NewLeaderElector(
|
||||||
Lock: rl,
|
leaderelection.LeaderElectionConfig{
|
||||||
LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
|
Lock: rl,
|
||||||
RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
|
LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
|
||||||
RetryPeriod: s.LeaderElection.RetryPeriod.Duration,
|
RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
|
||||||
Callbacks: leaderelection.LeaderCallbacks{
|
RetryPeriod: s.LeaderElection.RetryPeriod.Duration,
|
||||||
OnStartedLeading: run,
|
Callbacks: leaderelection.LeaderCallbacks{
|
||||||
OnStoppedLeading: func() {
|
OnStartedLeading: run,
|
||||||
glog.Fatalf("lost master")
|
OnStoppedLeading: func() {
|
||||||
|
utilruntime.HandleError(fmt.Errorf("lost master"))
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
})
|
||||||
})
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
panic("unreachable")
|
leaderElector.Run()
|
||||||
|
|
||||||
|
return fmt.Errorf("lost lease")
|
||||||
}
|
}
|
||||||
|
|
||||||
func startHTTP(s *options.SchedulerServer) {
|
func startHTTP(s *options.SchedulerServer) {
|
||||||
|
Loading…
Reference in New Issue
Block a user