Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
5a443f09
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,体验更适合开发者的 AI 搜索 >>
提交
5a443f09
编写于
11月 20, 2020
作者:
M
Medya Gh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
try reload dockerd first before restart
上级
61abd1e6
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
48 addition
and
15 deletion
+48
-15
cmd/minikube/cmd/docker-env.go
cmd/minikube/cmd/docker-env.go
+25
-11
pkg/minikube/sysinit/openrc.go
pkg/minikube/sysinit/openrc.go
+7
-0
pkg/minikube/sysinit/sysinit.go
pkg/minikube/sysinit/sysinit.go
+3
-0
pkg/minikube/sysinit/systemd.go
pkg/minikube/sysinit/systemd.go
+13
-4
未找到文件。
cmd/minikube/cmd/docker-env.go
浏览文件 @
5a443f09
...
...
@@ -27,6 +27,7 @@ import (
"os/exec"
"strconv"
"strings"
"time"
"github.com/spf13/cobra"
"k8s.io/klog/v2"
...
...
@@ -151,15 +152,31 @@ func (EnvNoProxyGetter) GetNoProxyVar() (string, string) {
return
noProxyVar
,
noProxyValue
}
// isDockerActive checks if Docker is active
func
isDockerActive
(
r
command
.
Runner
)
bool
{
return
sysinit
.
New
(
r
)
.
Active
(
"docker"
)
}
// ensureDockerd ensures dockerd inside minikube is running before a docker-env command
func
ensureDockerd
(
name
string
,
runner
command
.
Runner
)
{
if
ok
:=
isDockerActive
(
runner
);
ok
{
return
}
func
mustRestartDocker
(
name
string
,
runner
command
.
Runner
)
{
// Docker Docs: https://docs.docker.com/config/containers/live-restore
// On Linux, you can avoid a restart (and avoid any downtime for your containers) by reloading the Docker daemon.
klog
.
Warningf
(
"dockerd is not active will try to reload it..."
)
if
err
:=
sysinit
.
New
(
runner
)
.
Reload
(
"docker"
);
err
!=
nil
{
klog
.
Warningf
(
"will try to restar docker because reload failed: %v"
,
err
)
if
err
:=
sysinit
.
New
(
runner
)
.
Restart
(
"docker"
);
err
!=
nil
{
exit
.
Message
(
reason
.
RuntimeRestart
,
`The Docker service within '{{.name}}' is not active`
,
out
.
V
{
"name"
:
name
})
}
// if we get to the point that we have to restart docker (instead of reload)
// will need to wait for apisever container to come up, this usually takes 5 seconds
// verifying apisever using kverify would add code complexity for a rare case.
klog
.
Warningf
(
"waiting 5 seconds to ensure apisever container is up..."
)
time
.
Sleep
(
time
.
Second
*
5
)
}
}
// isDockerActive checks if Docker is active
func
isDockerActive
(
r
command
.
Runner
)
bool
{
return
sysinit
.
New
(
r
)
.
Active
(
"docker"
)
}
// dockerEnvCmd represents the docker-env command
...
...
@@ -205,10 +222,7 @@ var dockerEnvCmd = &cobra.Command{
out
.
V
{
"runtime"
:
co
.
Config
.
KubernetesConfig
.
ContainerRuntime
})
}
if
ok
:=
isDockerActive
(
co
.
CP
.
Runner
);
!
ok
{
klog
.
Warningf
(
"dockerd is not active will try to restart it..."
)
mustRestartDocker
(
cname
,
co
.
CP
.
Runner
)
}
ensureDockerd
(
cname
,
co
.
CP
.
Runner
)
port
:=
constants
.
DockerDaemonPort
if
driver
.
NeedsPortForward
(
driverName
)
{
...
...
@@ -239,7 +253,7 @@ var dockerEnvCmd = &cobra.Command{
if
err
!=
nil
{
// docker might be up but been loaded with wrong certs/config
// to fix issues like this #8185
klog
.
Warningf
(
"couldn't connect to docker inside minikube. will try to restart dockerd service... output: %s error: %v"
,
string
(
out
),
err
)
mustRestartDocker
(
cname
,
co
.
CP
.
Runner
)
esnureDockerd
(
cname
,
co
.
CP
.
Runner
)
}
}
...
...
pkg/minikube/sysinit/openrc.go
浏览文件 @
5a443f09
...
...
@@ -20,6 +20,7 @@ package sysinit
import
(
"bytes"
"context"
"fmt"
"html/template"
"os/exec"
"path"
...
...
@@ -128,6 +129,12 @@ func (s *OpenRC) Restart(svc string) error {
return
err
}
// Reload reloads a service
// currently only used by our docker-env that doesn't need openrc implementation
func
(
s
*
OpenRC
)
Reload
(
svc
string
)
error
{
return
fmt
.
Errorf
(
"reload is not implemented for OpenRC yet ! Please implement if needed"
)
}
// Stop stops a service
func
(
s
*
OpenRC
)
Stop
(
svc
string
)
error
{
rr
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"service"
,
svc
,
"stop"
))
...
...
pkg/minikube/sysinit/sysinit.go
浏览文件 @
5a443f09
...
...
@@ -50,6 +50,9 @@ type Manager interface {
// Restart restarts a service
Restart
(
string
)
error
// Reload restarts a service
Reload
(
string
)
error
// Stop stops a service
Stop
(
string
)
error
...
...
pkg/minikube/sysinit/systemd.go
浏览文件 @
5a443f09
...
...
@@ -34,8 +34,8 @@ func (s *Systemd) Name() string {
return
"systemd"
}
//
r
eload reloads systemd configuration
func
(
s
*
Systemd
)
r
eload
()
error
{
//
daemonR
eload reloads systemd configuration
func
(
s
*
Systemd
)
daemonR
eload
()
error
{
_
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"systemctl"
,
"daemon-reload"
))
return
err
}
...
...
@@ -63,7 +63,7 @@ func (s *Systemd) Enable(svc string) error {
// Start starts a service
func
(
s
*
Systemd
)
Start
(
svc
string
)
error
{
if
err
:=
s
.
r
eload
();
err
!=
nil
{
if
err
:=
s
.
daemonR
eload
();
err
!=
nil
{
return
err
}
_
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"systemctl"
,
"start"
,
svc
))
...
...
@@ -72,13 +72,22 @@ func (s *Systemd) Start(svc string) error {
// Restart restarts a service
func
(
s
*
Systemd
)
Restart
(
svc
string
)
error
{
if
err
:=
s
.
r
eload
();
err
!=
nil
{
if
err
:=
s
.
daemonR
eload
();
err
!=
nil
{
return
err
}
_
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"systemctl"
,
"restart"
,
svc
))
return
err
}
// Reload reloads a service
func
(
s
*
Systemd
)
Reload
(
svc
string
)
error
{
if
err
:=
s
.
daemonReload
();
err
!=
nil
{
return
err
}
_
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"systemctl"
,
"reload"
,
svc
))
return
err
}
// Stop stops a service
func
(
s
*
Systemd
)
Stop
(
svc
string
)
error
{
_
,
err
:=
s
.
r
.
RunCmd
(
exec
.
Command
(
"sudo"
,
"systemctl"
,
"stop"
,
svc
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录