Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Chu Peng 楚鹏
minikube
提交
5eaae409
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 搜索 >>
提交
5eaae409
编写于
5月 12, 2016
作者:
D
Dan Lorenc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Working build, scp of localkube to the VM.
上级
92d0c94d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
69 addition
and
31 deletion
+69
-31
.gitignore
.gitignore
+2
-0
Makefile
Makefile
+8
-0
cmd/minikube/cmd/start.go
cmd/minikube/cmd/start.go
+5
-0
pkg/minikube/cluster/cluster.go
pkg/minikube/cluster/cluster.go
+17
-1
pkg/minikube/cluster/commands.go
pkg/minikube/cluster/commands.go
+3
-10
pkg/minikube/sshutil/sshutil.go
pkg/minikube/sshutil/sshutil.go
+34
-20
未找到文件。
.gitignore
浏览文件 @
5eaae409
...
...
@@ -25,3 +25,5 @@ _testmain.go
/out
/.gopath
pkg/minikube/cluster/localkubecontents.go
\ No newline at end of file
Makefile
浏览文件 @
5eaae409
...
...
@@ -54,3 +54,11 @@ docker/localkube:
.PHONY
:
test
test
:
gopath
./test.sh
docker/minikube-full
:
docker/localkube-incremental
go-bindata
-nomemcopy
-o
pkg/minikube/cluster/localkubecontents.go
-pkg
cluster ./out/localkube
make minikube
minikube-full
:
localkube
go-bindata
-nomemcopy
-o
pkg/minikube/cluster/localkubecontents.go
-pkg
cluster ./out/localkube
make minikube
\ No newline at end of file
cmd/minikube/cmd/start.go
浏览文件 @
5eaae409
...
...
@@ -56,6 +56,11 @@ func runStart(cmd *cobra.Command, args []string) {
LocalkubeURL
:
localkubeURL
,
}
if
err
:=
cluster
.
UpdateCluster
(
host
.
Driver
);
err
!=
nil
{
log
.
Println
(
"Error updating cluster: "
,
err
)
os
.
Exit
(
1
)
}
if
err
:=
cluster
.
StartCluster
(
host
,
config
);
err
!=
nil
{
log
.
Println
(
"Error starting cluster: "
,
err
)
os
.
Exit
(
1
)
...
...
pkg/minikube/cluster/cluster.go
浏览文件 @
5eaae409
...
...
@@ -27,9 +27,11 @@ import (
"github.com/docker/machine/drivers/virtualbox"
"github.com/docker/machine/libmachine"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/host"
"github.com/docker/machine/libmachine/state"
"k8s.io/minikube/pkg/minikube/constants"
"k8s.io/minikube/pkg/minikube/sshutil"
)
const
(
...
...
@@ -145,7 +147,7 @@ type KubernetesConfig struct {
// StartCluster starts a k8s cluster on the specified Host.
func
StartCluster
(
h
sshAble
,
config
KubernetesConfig
)
error
{
output
,
err
:=
h
.
RunSSHCommand
(
getStartCommand
(
config
.
LocalkubeURL
))
output
,
err
:=
h
.
RunSSHCommand
(
getStartCommand
())
log
.
Println
(
output
)
if
err
!=
nil
{
return
err
...
...
@@ -154,6 +156,20 @@ func StartCluster(h sshAble, config KubernetesConfig) error {
return
nil
}
func
UpdateCluster
(
d
drivers
.
Driver
)
error
{
localkube
,
err
:=
Asset
(
"out/localkube"
)
if
err
!=
nil
{
log
.
Println
(
"error loadking localkube: "
,
err
)
return
err
}
client
,
err
:=
sshutil
.
NewSSHClient
(
d
)
if
err
!=
nil
{
return
err
}
return
sshutil
.
Transfer
(
localkube
,
"/usr/local/bin/"
,
"localkube"
,
"0777"
,
client
)
}
// GetCreds gets the generated credentials required to talk to the APIServer.
func
GetCreds
(
h
sshAble
)
error
{
localPath
:=
constants
.
Minipath
...
...
pkg/minikube/cluster/commands.go
浏览文件 @
5eaae409
package
cluster
import
"fmt"
var
startCommand
=
`sudo killall localkube || true
# Download and install localkube, if it doesn't exist yet.
if [ ! -e /usr/local/bin/localkube ]; then
sudo curl --compressed -L %s -o /usr/local/bin/localkube
sudo chmod a+x /usr/local/bin/localkube
fi
var
startCommand
=
`
# Run with nohup so it stays up. Redirect logs to useful places.
PATH=/usr/local/sbin:$PATH nohup sudo /usr/local/bin/localkube start > /var/log/localkube.out 2> /var/log/localkube.err < /dev/null &
`
func
getStartCommand
(
localkubeURL
string
)
string
{
return
fmt
.
Sprintf
(
startCommand
,
localkubeURL
)
func
getStartCommand
()
string
{
return
startCommand
}
pkg/minikube/sshutil/sshutil.go
浏览文件 @
5eaae409
...
...
@@ -17,10 +17,10 @@ limitations under the License.
package
sshutil
import
(
"b
ufio
"
"b
ytes
"
"fmt"
"io"
"
os
"
"
path/filepath
"
"github.com/docker/machine/libmachine/drivers"
machinessh
"github.com/docker/machine/libmachine/ssh"
...
...
@@ -31,12 +31,12 @@ import (
type
SSHSession
interface
{
Close
()
error
StdinPipe
()
(
io
.
WriteCloser
,
error
)
Start
(
cmd
string
)
error
Run
(
cmd
string
)
error
Wait
()
error
}
// NewSSH
Session returns an SSHSession
object for running commands.
func
NewSSH
Session
(
d
drivers
.
Driver
)
(
SSHSession
,
error
)
{
// NewSSH
Client returns an SSH client
object for running commands.
func
NewSSH
Client
(
d
drivers
.
Driver
)
(
*
ssh
.
Client
,
error
)
{
h
,
err
:=
newSSHHost
(
d
)
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -55,37 +55,51 @@ func NewSSHSession(d drivers.Driver) (SSHSession, error) {
if
err
!=
nil
{
return
nil
,
err
}
session
,
err
:=
client
.
NewSession
()
if
err
!=
nil
{
return
nil
,
err
}
return
session
,
nil
return
client
,
nil
}
// Transfer uses an SSH session to copy a file to the remote machine.
func
Transfer
(
localpath
,
remotepath
string
,
r
SSHSession
)
error
{
f
,
err
:=
os
.
Open
(
localpath
)
if
err
!=
nil
{
func
Transfer
(
data
[]
byte
,
remotedir
,
filename
string
,
perm
string
,
c
*
ssh
.
Client
)
error
{
// Delete the old file first. This makes sure permissions get reset.
deleteCmd
:=
fmt
.
Sprintf
(
"sudo rm -f %s"
,
filepath
.
Join
(
remotedir
,
filename
))
if
err
:=
runCommand
(
c
,
deleteCmd
);
err
!=
nil
{
return
err
}
reader
:=
bufio
.
NewReader
(
f
)
cmd
:=
fmt
.
Sprintf
(
"cat > %s"
,
remotepath
)
stdin
,
err
:=
r
.
StdinPipe
()
s
,
err
:=
c
.
NewSession
()
if
err
!=
nil
{
return
err
}
if
err
:=
r
.
Start
(
cmd
);
err
!=
nil
{
go
func
()
{
w
,
err
:=
s
.
StdinPipe
()
defer
w
.
Close
()
if
err
!=
nil
{
return
}
header
:=
fmt
.
Sprintf
(
"C%s %d %s
\n
"
,
perm
,
len
(
data
),
filename
)
fmt
.
Fprint
(
w
,
header
)
reader
:=
bytes
.
NewReader
(
data
)
io
.
Copy
(
w
,
reader
)
fmt
.
Fprint
(
w
,
"
\x00
"
)
}()
scpcmd
:=
fmt
.
Sprintf
(
"sudo /usr/local/bin/scp -t %s"
,
remotedir
)
if
err
:=
s
.
Run
(
scpcmd
);
err
!=
nil
{
return
err
}
_
,
err
=
io
.
Copy
(
stdin
,
reader
)
stdin
.
Close
()
return
nil
}
func
runCommand
(
c
*
ssh
.
Client
,
cmd
string
)
error
{
s
,
err
:=
c
.
NewSession
()
defer
s
.
Close
()
if
err
!=
nil
{
return
err
}
return
r
.
Wait
(
)
return
s
.
Run
(
cmd
)
}
type
sshHost
struct
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录