diff --git a/cmd/kubeadm/app/cmd/reset.go b/cmd/kubeadm/app/cmd/reset.go index 197ea246464..c2325b789db 100644 --- a/cmd/kubeadm/app/cmd/reset.go +++ b/cmd/kubeadm/app/cmd/reset.go @@ -136,9 +136,16 @@ func (r *Reset) Run(out io.Writer) error { fmt.Printf("failed to unmount directories in /var/lib/kubelet, %s", string(umountOutputBytes)) } + dirsToClean := []string{"/var/lib/kubelet"} + + // Only clear etcd data when the etcd manifest is found. In case it is not found, we must assume that the user + // provided external etcd endpoints. In that case, it is his own responsibility to reset etcd + if _, err := os.Stat("/etc/kubernetes/manifests/etcd.json"); os.IsNotExist(err) { + dirsToClean = append(dirsToClean, "/var/lib/etcd") + } + resetConfigDir("/etc/kubernetes/") - dirsToClean := []string{"/var/lib/kubelet", "/var/lib/etcd"} fmt.Printf("Deleting contents of stateful directories: %v\n", dirsToClean) for _, dir := range dirsToClean { cleanDir(dir) diff --git a/cmd/kubeadm/app/preflight/checks.go b/cmd/kubeadm/app/preflight/checks.go index b8142ace558..803315478da 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -240,7 +240,6 @@ func RunInitMasterChecks(cfg *kubeadmapi.MasterConfiguration) error { ServiceCheck{Service: "kubelet"}, ServiceCheck{Service: "docker"}, PortOpenCheck{port: int(cfg.API.BindPort)}, - PortOpenCheck{port: 2379}, PortOpenCheck{port: 8080}, PortOpenCheck{port: int(cfg.Discovery.BindPort)}, PortOpenCheck{port: 10250}, @@ -249,7 +248,6 @@ func RunInitMasterChecks(cfg *kubeadmapi.MasterConfiguration) error { HttpProxyCheck{Proto: "https", Host: cfg.API.AdvertiseAddresses[0], Port: int(cfg.API.BindPort)}, DirAvailableCheck{Path: "/etc/kubernetes/manifests"}, DirAvailableCheck{Path: "/etc/kubernetes/pki"}, - DirAvailableCheck{Path: "/var/lib/etcd"}, DirAvailableCheck{Path: "/var/lib/kubelet"}, FileAvailableCheck{Path: "/etc/kubernetes/admin.conf"}, FileAvailableCheck{Path: "/etc/kubernetes/kubelet.conf"}, @@ -264,6 +262,14 @@ func RunInitMasterChecks(cfg *kubeadmapi.MasterConfiguration) error { InPathCheck{executable: "touch", mandatory: false}, } + if len(cfg.Etcd.Endpoints) == 0 { + // Only do etcd related checks when no external endpoints were specified + checks = append(checks, + PortOpenCheck{port: 2379}, + DirAvailableCheck{Path: "/var/lib/etcd"}, + ) + } + return runChecks(checks, os.Stderr) }