From cf000bff951013db9a0c907938ac87e1d55e149a Mon Sep 17 00:00:00 2001 From: Paulo Pires Date: Fri, 14 Oct 2016 18:03:27 +0100 Subject: [PATCH] kubeadm: fix preflight checks. --- cmd/kubeadm/app/cmd/init.go | 18 ++++++------------ cmd/kubeadm/app/cmd/join.go | 2 +- cmd/kubeadm/app/preflight/checks.go | 21 +++++++++------------ 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/cmd/kubeadm/app/cmd/init.go b/cmd/kubeadm/app/cmd/init.go index a22591f64e6..97659ff7586 100644 --- a/cmd/kubeadm/app/cmd/init.go +++ b/cmd/kubeadm/app/cmd/init.go @@ -27,7 +27,6 @@ import ( kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubemaster "k8s.io/kubernetes/cmd/kubeadm/app/master" "k8s.io/kubernetes/cmd/kubeadm/app/preflight" - cmdutil "k8s.io/kubernetes/cmd/kubeadm/app/util" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/cloudprovider" @@ -55,14 +54,9 @@ func NewCmdInit(out io.Writer) *cobra.Command { Use: "init", Short: "Run this in order to set up the Kubernetes master.", Run: func(cmd *cobra.Command, args []string) { - check := func(err error) { - if err != nil { - cmdutil.CheckErr(fmt.Errorf(" %v", err)) - } - } i, err := NewInit(cfgPath, cfg, skipPreFlight) - check(err) - check(i.Run(out)) + kubeadmutil.CheckErr(err) + kubeadmutil.CheckErr(i.Run(out)) }, } @@ -126,6 +120,7 @@ func NewCmdInit(out io.Writer) *cobra.Command { "etcd client key file. Note: The path must be in /etc/ssl/certs", ) cmd.PersistentFlags().MarkDeprecated("external-etcd-keyfile", "this flag will be removed when componentconfig exists") + cmd.PersistentFlags().BoolVar( &skipPreFlight, "skip-preflight-checks", false, "skip preflight checks normally run before modifying the system", @@ -150,10 +145,10 @@ func NewInit(cfgPath string, cfg *kubeadmapi.MasterConfiguration, skipPreFlight } if !skipPreFlight { - fmt.Println(" Running pre-flight checks") + fmt.Println("Running pre-flight checks") err := preflight.RunInitMasterChecks() if err != nil { - return nil, err + return nil, &preflight.PreFlightError{Msg: err.Error()} } } else { fmt.Println("Skipping pre-flight checks") @@ -180,9 +175,8 @@ func NewInit(cfgPath string, cfg *kubeadmapi.MasterConfiguration, skipPreFlight return &Init{cfg: cfg}, nil } -// RunInit executes master node provisioning, including certificates, needed static pod manifests, etc. +// Run executes master node provisioning, including certificates, needed static pod manifests, etc. func (i *Init) Run(out io.Writer) error { - if err := kubemaster.CreateTokenAuthFile(&i.cfg.Secrets); err != nil { return err } diff --git a/cmd/kubeadm/app/cmd/join.go b/cmd/kubeadm/app/cmd/join.go index adca8ed82d0..db1d9b1d374 100644 --- a/cmd/kubeadm/app/cmd/join.go +++ b/cmd/kubeadm/app/cmd/join.go @@ -73,7 +73,7 @@ func RunJoin(out io.Writer, cmd *cobra.Command, args []string, s *kubeadmapi.Nod fmt.Println("Running pre-flight checks") err := preflight.RunJoinNodeChecks() if err != nil { - return err + return &preflight.PreFlightError{Msg: err.Error()} } } else { fmt.Println("Skipping pre-flight checks") diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index 748d8ecfb85..7a4f20e9326 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -17,6 +17,7 @@ limitations under the License. package preflight import ( + "errors" "fmt" "io" "net" @@ -27,12 +28,11 @@ import ( ) type PreFlightError struct { - Msg string - Count int + Msg string } func (e *PreFlightError) Error() string { - return fmt.Sprintf("preflight check error\n count: %d \n msg: %s", e.Count, e.Msg) + return fmt.Sprintf("preflight check errors:\n%s", e.Msg) } // PreFlightCheck validates the state of the system to ensure kubeadm will be @@ -216,23 +216,20 @@ func RunJoinNodeChecks() error { func runChecks(checks []PreFlightCheck) error { found := []error{} for _, c := range checks { - warnings, errors := c.Check() + warnings, errs := c.Check() for _, w := range warnings { - fmt.Printf(" WARNING: %s\n", w) + fmt.Printf("WARNING: %s\n", w) } - for _, e := range errors { + for _, e := range errs { found = append(found, e) } } if len(found) > 0 { - errors := "\n" + errs := "" for _, i := range found { - errors += "\t" + i.Error() + "\n" - } - return &PreFlightError{ - Msg: errors, - Count: len(found), + errs += "\t" + i.Error() + "\n" } + return errors.New(errs) } return nil }