mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	update scheduler to return structured errors instead of process exit
This commit is contained in:
		@@ -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,10 +128,11 @@ 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(
 | 
				
			||||||
 | 
							leaderelection.LeaderElectionConfig{
 | 
				
			||||||
			Lock:          rl,
 | 
								Lock:          rl,
 | 
				
			||||||
			LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
 | 
								LeaseDuration: s.LeaderElection.LeaseDuration.Duration,
 | 
				
			||||||
			RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
 | 
								RenewDeadline: s.LeaderElection.RenewDeadline.Duration,
 | 
				
			||||||
@@ -138,12 +140,17 @@ func Run(s *options.SchedulerServer) error {
 | 
				
			|||||||
			Callbacks: leaderelection.LeaderCallbacks{
 | 
								Callbacks: leaderelection.LeaderCallbacks{
 | 
				
			||||||
				OnStartedLeading: run,
 | 
									OnStartedLeading: run,
 | 
				
			||||||
				OnStoppedLeading: func() {
 | 
									OnStoppedLeading: func() {
 | 
				
			||||||
				glog.Fatalf("lost master")
 | 
										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) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user