diff --git a/cmd/kubeadm/app/cmd/reset.go b/cmd/kubeadm/app/cmd/reset.go index a44afbefd9d..eeafefe9d24 100644 --- a/cmd/kubeadm/app/cmd/reset.go +++ b/cmd/kubeadm/app/cmd/reset.go @@ -131,9 +131,16 @@ func (r *Reset) Run(out io.Writer) error { // Don't check for errors here, since umount will return a non-zero exit code if there is no directories to umount exec.Command("sh", "-c", "cat /proc/mounts | awk '{print $2}' | grep '/var/lib/kubelet' | xargs umount").Run() + 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 1b0950745ff..686b0eba4cb 100644 --- a/cmd/kubeadm/app/preflight/checks.go +++ b/cmd/kubeadm/app/preflight/checks.go @@ -221,7 +221,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}, @@ -230,7 +229,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"}, @@ -245,6 +243,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) }