diff --git a/cmd/kube-scheduler/app/server.go b/cmd/kube-scheduler/app/server.go index 0234379dac2..3d92871060f 100644 --- a/cmd/kube-scheduler/app/server.go +++ b/cmd/kube-scheduler/app/server.go @@ -79,16 +79,17 @@ suitable Node. Multiple different schedulers may be used within a cluster; kube-scheduler is the reference implementation. See [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/) for more information about scheduling and the kube-scheduler component.`, - Run: func(cmd *cobra.Command, args []string) { + RunE: func(cmd *cobra.Command, args []string) error { if err := opts.Complete(&namedFlagSets); err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) - os.Exit(1) + return err } if err := runCommand(cmd, opts, registryOptions...); err != nil { - fmt.Fprintf(os.Stderr, "%v\n", err) - os.Exit(1) + return err } + return nil }, + SilenceErrors: true, + SilenceUsage: true, Args: func(cmd *cobra.Command, args []string) error { for _, arg := range args { if len(arg) > 0 { diff --git a/cmd/kube-scheduler/scheduler.go b/cmd/kube-scheduler/scheduler.go index 521bf5582ec..39c873c4f65 100644 --- a/cmd/kube-scheduler/scheduler.go +++ b/cmd/kube-scheduler/scheduler.go @@ -17,6 +17,7 @@ limitations under the License. package main import ( + "fmt" "math/rand" "os" "time" @@ -32,6 +33,13 @@ import ( ) func main() { + if err := runSchedulerCmd(); err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + os.Exit(1) + } +} + +func runSchedulerCmd() error { rand.Seed(time.Now().UnixNano()) pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) @@ -42,6 +50,8 @@ func main() { defer logs.FlushLogs() if err := command.Execute(); err != nil { - os.Exit(1) + return err } + + return nil }