From 9d2c0b202c1203d324665ccac0ec24f07d6c1146 Mon Sep 17 00:00:00 2001 From: tstromberg Date: Tue, 21 May 2019 11:47:12 -0700 Subject: [PATCH 1/4] Disable SystemVerification preflight on Kubernetes releases <1.13 --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 59 +++++++------------ .../bootstrapper/kubeadm/templates.go | 4 -- 2 files changed, 20 insertions(+), 43 deletions(-) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 714d43c1ddca..f478711d5605 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -73,24 +73,6 @@ var KubeadmExtraArgsWhitelist = map[int][]string{ }, } -// SkipPreflights are preflight checks we always skip. -var SkipPreflights = []string{ - // We use --ignore-preflight-errors=DirAvailable since we have our own custom addons - // that we also stick in /etc/kubernetes/manifests - "DirAvailable--etc-kubernetes-manifests", - "DirAvailable--data-minikube", - "Port-10250", - "FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml", - "FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml", - "FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml", - "FileAvailable--etc-kubernetes-manifests-etcd.yaml", - // So that "none" driver users don't have to reconfigure their machine - "Swap", - // We use --ignore-preflight-errors=CRI since /var/run/dockershim.sock is not present. - // (because we start kubelet with an invalid config) - "CRI", -} - type pod struct { // Human friendly name name string @@ -221,30 +203,29 @@ func (k *Bootstrapper) StartCluster(k8s config.KubernetesConfig) error { if err != nil { return err } - b := bytes.Buffer{} - preflights := SkipPreflights - preflights = append(preflights, SkipAdditionalPreflights[r.Name()]...) - - templateContext := struct { - KubeadmConfigFile string - SkipPreflightChecks bool - Preflights []string - ExtraOptions string - }{ - KubeadmConfigFile: constants.KubeadmConfigFile, - SkipPreflightChecks: !VersionIsBetween(version, - semver.MustParse("1.9.0-alpha.0"), - semver.Version{}), - Preflights: preflights, - ExtraOptions: extraFlags, - } - if err := kubeadmInitTemplate.Execute(&b, templateContext); err != nil { - return err + + ignore := []string{ + "DirAvailable--etc-kubernetes-manifests", // Addons are stored in /etc/kubernetes/manifests + "DirAvailable--data-minikube", + "FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml", + "FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml", + "FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml", + "FileAvailable--etc-kubernetes-manifests-etcd.yaml", + // "Port-10250", // Kubelet + "Swap", // For "none" driver users } + ignore = append(ignore, SkipAdditionalPreflights[r.Name()]...) - out, err := k.c.CombinedOutput(b.String()) + // Allow older kubeadm versions to function with newer Docker releases. + if version.GTE(semver.MustParse("1.13.0")) { + ignore = append(ignore, "SystemVerification") + } + + cmd := fmt.Sprintf("sudo /usr/bin/kubeadm init --config %s %s --ignore-preflight-errors=%s", + constants.KubeadmConfigFile, extraFlags, strings.Join(ignore, ",")) + out, err := k.c.CombinedOutput(cmd) if err != nil { - return errors.Wrapf(err, "kubeadm init: %s\n%s\n", b.String(), out) + return errors.Wrapf(err, "cmd failed: %s\n%s\n", cmd, out) } if version.LT(semver.MustParse("1.10.0-alpha.0")) { diff --git a/pkg/minikube/bootstrapper/kubeadm/templates.go b/pkg/minikube/bootstrapper/kubeadm/templates.go index e1b14bc1840f..d43ccf748d71 100644 --- a/pkg/minikube/bootstrapper/kubeadm/templates.go +++ b/pkg/minikube/bootstrapper/kubeadm/templates.go @@ -177,10 +177,6 @@ RestartSec=10 WantedBy=multi-user.target ` -var kubeadmInitTemplate = template.Must(template.New("kubeadmInitTemplate").Parse(` -sudo /usr/bin/kubeadm init --config {{.KubeadmConfigFile}} {{.ExtraOptions}} {{if .SkipPreflightChecks}}--skip-preflight-checks{{else}}{{range .Preflights}}--ignore-preflight-errors={{.}} {{end}}{{end}} -`)) - // printMapInOrder sorts the keys and prints the map in order, combining key // value pairs with the separator character // From 04f6cf1230830ab50d2fee9af6be46ffd9710305 Mon Sep 17 00:00:00 2001 From: tstromberg Date: Tue, 21 May 2019 11:52:45 -0700 Subject: [PATCH 2/4] Improve how we document Port-10250 and Swap --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index f478711d5605..25dfe378379b 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -211,8 +211,8 @@ func (k *Bootstrapper) StartCluster(k8s config.KubernetesConfig) error { "FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml", "FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml", "FileAvailable--etc-kubernetes-manifests-etcd.yaml", - // "Port-10250", // Kubelet - "Swap", // For "none" driver users + "Port-10250", // For "none" users who already have a kubelet online + "Swap", // For "none" users who have swap configured } ignore = append(ignore, SkipAdditionalPreflights[r.Name()]...) From 14b4e17cc1f5fe543b5378f99e955c443931c547 Mon Sep 17 00:00:00 2001 From: tstromberg Date: Tue, 21 May 2019 12:01:47 -0700 Subject: [PATCH 3/4] Fix version comparison --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 25dfe378379b..59fcf7c59ce2 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -217,7 +217,7 @@ func (k *Bootstrapper) StartCluster(k8s config.KubernetesConfig) error { ignore = append(ignore, SkipAdditionalPreflights[r.Name()]...) // Allow older kubeadm versions to function with newer Docker releases. - if version.GTE(semver.MustParse("1.13.0")) { + if version.LT(semver.MustParse("1.13.0")) { ignore = append(ignore, "SystemVerification") } From 11cdcef0e18d64159f945e168c487d01299e2dfb Mon Sep 17 00:00:00 2001 From: tstromberg Date: Tue, 21 May 2019 13:14:17 -0700 Subject: [PATCH 4/4] Add log statement --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 59fcf7c59ce2..f9964d30204b 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -218,6 +218,7 @@ func (k *Bootstrapper) StartCluster(k8s config.KubernetesConfig) error { // Allow older kubeadm versions to function with newer Docker releases. if version.LT(semver.MustParse("1.13.0")) { + glog.Infof("Older Kubernetes release detected (%s), disabling SystemVerification check.", version) ignore = append(ignore, "SystemVerification") }