提交 c6033007 编写于 作者: M Medya Ghazizadeh 提交者: Sharif Elgamal

more reliable stop for none driver (#4871)

* more reliable stop for none driver

* print stop error

* better error logging

* misspell

* error formatting

* Passing lint interfacer nag
上级 4ea0250a
......@@ -17,8 +17,10 @@ limitations under the License.
package none
import (
"bytes"
"fmt"
"strings"
"time"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/state"
......@@ -29,6 +31,7 @@ import (
"k8s.io/minikube/pkg/minikube/command"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/cruntime"
"k8s.io/minikube/pkg/util"
)
const driverName = constants.DriverNone
......@@ -218,7 +221,29 @@ func (d *Driver) RunSSHCommandFromDriver() error {
// stopKubelet idempotently stops the kubelet
func stopKubelet(exec command.Runner) error {
glog.Infof("stopping kubelet.service ...")
return exec.Run("sudo systemctl stop kubelet.service")
stop := func() error {
cmdStop := "sudo systemctl stop kubelet.service"
cmdCheck := "sudo systemctl show -p SubState --value kubelet"
err := exec.Run(cmdStop)
if err != nil {
glog.Errorf("Temporary Error for %q : %v", cmdStop, err)
}
var out bytes.Buffer
errStatus := exec.CombinedOutputTo(cmdCheck, &out)
if errStatus != nil {
glog.Errorf("Temporary Error: for %q : %v", cmdCheck, errStatus)
}
if !strings.Contains(out.String(), "dead") {
return fmt.Errorf("expected to kubelet to be dead but it got : %q", out)
}
return nil
}
if err := util.RetryAfter(3, stop, 2*time.Second); err != nil {
return errors.Wrapf(err, "Error stopping kubelet")
}
return nil
}
// restartKubelet restarts the kubelet
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册