Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
beec3b1c
M
minikube
项目概览
Chu Peng 楚鹏
/
minikube
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
minikube
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
beec3b1c
编写于
3月 23, 2020
作者:
M
Medya Gh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
stop kubelet on docker stop
上级
1a19f8f0
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
42 addition
and
33 deletion
+42
-33
pkg/drivers/common.go
pkg/drivers/common.go
+32
-0
pkg/drivers/kic/kic.go
pkg/drivers/kic/kic.go
+6
-0
pkg/drivers/none/none.go
pkg/drivers/none/none.go
+4
-33
未找到文件。
pkg/drivers/common.go
浏览文件 @
beec3b1c
...
...
@@ -17,11 +17,15 @@ limitations under the License.
package
drivers
import
(
"fmt"
"io"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"strings"
"syscall"
"time"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/mcnflag"
...
...
@@ -29,6 +33,8 @@ import (
"github.com/docker/machine/libmachine/ssh"
"github.com/golang/glog"
"github.com/pkg/errors"
"k8s.io/minikube/pkg/minikube/command"
"k8s.io/minikube/pkg/util/retry"
)
// This file is for common code shared among internal machine drivers
...
...
@@ -139,3 +145,29 @@ func fixMachinePermissions(path string) error {
}
return
nil
}
// StopKubelet idempotently stops the kubelet
func
StopKubelet
(
cr
command
.
Runner
)
error
{
glog
.
Infof
(
"stopping kubelet.service ..."
)
stop
:=
func
()
error
{
cmd
:=
exec
.
Command
(
"sudo"
,
"systemctl"
,
"stop"
,
"-f"
,
"kubelet.service"
)
if
rr
,
err
:=
cr
.
RunCmd
(
cmd
);
err
!=
nil
{
glog
.
Errorf
(
"temporary error for %q : %v"
,
rr
.
Command
(),
err
)
}
cmd
=
exec
.
Command
(
"sudo"
,
"systemctl"
,
"show"
,
"-p"
,
"SubState"
,
"kubelet"
)
rr
,
err
:=
cr
.
RunCmd
(
cmd
)
if
err
!=
nil
{
glog
.
Errorf
(
"temporary error: for %q : %v"
,
rr
.
Command
(),
err
)
}
if
!
strings
.
Contains
(
rr
.
Stdout
.
String
(),
"dead"
)
&&
!
strings
.
Contains
(
rr
.
Stdout
.
String
(),
"failed"
)
{
return
fmt
.
Errorf
(
"unexpected kubelet state: %q"
,
rr
.
Stdout
.
String
())
}
return
nil
}
if
err
:=
retry
.
Expo
(
stop
,
2
*
time
.
Second
,
time
.
Minute
*
3
,
5
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"error stopping kubelet"
)
}
return
nil
}
pkg/drivers/kic/kic.go
浏览文件 @
beec3b1c
...
...
@@ -312,6 +312,12 @@ func (d *Driver) Start() error {
// Stop a host gracefully, including any containers that we are managing.
func
(
d
*
Driver
)
Stop
()
error
{
// docker does not send right SIG for systemd to know to stop the systemd.
// to avoid bind adress be taken on an upgrade. more info https://github.com/kubernetes/minikube/issues/7171
if
err
:=
pkgdrivers
.
StopKubelet
(
d
.
exec
);
err
!=
nil
{
glog
.
Warning
(
"couldn't stop kubelet %v"
,
err
)
}
cmd
:=
exec
.
Command
(
d
.
NodeConfig
.
OCIBinary
,
"stop"
,
d
.
MachineName
)
if
err
:=
cmd
.
Run
();
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"stopping %s"
,
d
.
MachineName
)
...
...
pkg/drivers/none/none.go
浏览文件 @
beec3b1c
...
...
@@ -20,8 +20,6 @@ import (
"fmt"
"net"
"os/exec"
"strings"
"time"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/state"
...
...
@@ -35,7 +33,6 @@ import (
"k8s.io/minikube/pkg/minikube/cruntime"
"k8s.io/minikube/pkg/minikube/kubeconfig"
"k8s.io/minikube/pkg/minikube/vmpath"
"k8s.io/minikube/pkg/util/retry"
)
// cleanupPaths are paths to be removed by cleanup, and are used by both kubeadm and minikube.
...
...
@@ -156,8 +153,8 @@ func (d *Driver) GetState() (state.State, error) {
// Kill stops a host forcefully, including any containers that we are managing.
func
(
d
*
Driver
)
Kill
()
error
{
if
err
:=
s
topKubelet
(
d
.
exec
);
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"kubelet"
)
if
err
:=
pkgdrivers
.
S
topKubelet
(
d
.
exec
);
err
!=
nil
{
glog
.
Warning
(
"couldn't stop kubelet %v. will continue with kill anyways."
,
err
)
}
// First try to gracefully stop containers
...
...
@@ -220,8 +217,8 @@ func (d *Driver) Start() error {
// Stop a host gracefully, including any containers that we are managing.
func
(
d
*
Driver
)
Stop
()
error
{
if
err
:=
s
topKubelet
(
d
.
exec
);
err
!=
nil
{
return
errors
.
Wrap
(
err
,
"stop kubelet"
)
if
err
:=
pkgdrivers
.
S
topKubelet
(
d
.
exec
);
err
!=
nil
{
glog
.
Warning
(
"couldn't stop kubelet %v. will continue with stop anyways."
,
err
)
}
containers
,
err
:=
d
.
runtime
.
ListContainers
(
cruntime
.
ListOptions
{})
if
err
!=
nil
{
...
...
@@ -241,32 +238,6 @@ func (d *Driver) RunSSHCommandFromDriver() error {
return
fmt
.
Errorf
(
"driver does not support ssh commands"
)
}
// stopKubelet idempotently stops the kubelet
func
stopKubelet
(
cr
command
.
Runner
)
error
{
glog
.
Infof
(
"stopping kubelet.service ..."
)
stop
:=
func
()
error
{
cmd
:=
exec
.
Command
(
"sudo"
,
"systemctl"
,
"stop"
,
"kubelet.service"
)
if
rr
,
err
:=
cr
.
RunCmd
(
cmd
);
err
!=
nil
{
glog
.
Errorf
(
"temporary error for %q : %v"
,
rr
.
Command
(),
err
)
}
cmd
=
exec
.
Command
(
"sudo"
,
"systemctl"
,
"show"
,
"-p"
,
"SubState"
,
"kubelet"
)
rr
,
err
:=
cr
.
RunCmd
(
cmd
)
if
err
!=
nil
{
glog
.
Errorf
(
"temporary error: for %q : %v"
,
rr
.
Command
(),
err
)
}
if
!
strings
.
Contains
(
rr
.
Stdout
.
String
(),
"dead"
)
&&
!
strings
.
Contains
(
rr
.
Stdout
.
String
(),
"failed"
)
{
return
fmt
.
Errorf
(
"unexpected kubelet state: %q"
,
rr
.
Stdout
.
String
())
}
return
nil
}
if
err
:=
retry
.
Expo
(
stop
,
2
*
time
.
Second
,
time
.
Minute
*
3
,
5
);
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"error stopping kubelet"
)
}
return
nil
}
// restartKubelet restarts the kubelet
func
restartKubelet
(
cr
command
.
Runner
)
error
{
glog
.
Infof
(
"restarting kubelet.service ..."
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录