编译kubernetes并在windows下运行调试api-server

1 在linux下编译kubernetes

1) 安装GO

下载Go并且配置相关环境变量,版本要求1.10+
https://golang.org/dl/

Download the archive and extract it into /usr/local, creating a Go tree in /usr/local/go. For example:

tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz

Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile:

export PATH=$PATH:/usr/local/go/bin

配置环境变量GOPath等,默认是/root/go。

2) 下载k8s源码

可以直接下载k8s源码,也可以使用git clone,我是下的k8s源码:
https://github.com/kubernetes/kubernetes/releases
我用的是目前的最新版:
v1.11.0-alpha.2

下载后,解压到到gopath/src/k8s.io/.
tar -xzf

3) 安装相关工具

godep工具

go get github.com/tools/godep

安装hg工具

yum install mercurial

(否则会出godep: error downloading dep (bitbucket.org/ww/goautoneg): exec: "hg": executable file not found in $PATH)

4) godep获取依赖包

cd /usr/lib/go-1.6/src/k8s.io/kubernetes

godep restore

这里会卡很久,我就跳过了。应该用make会自动做这件事。

5) 执行编译

直接在kubernetes目录下,执行make
这里需要4G+的内存,最好8G,否则会出现错误。

6) 执行单元测试。

可以执行go test。

go test -v k8s.io/kubernetes/pkg/kubelet

也可以执行

make test WHAT=./pkg/kubelet

2 在windows跑apiserver

1) 下载Go的IDE,推荐使用IDEA+go插件。

下载和配置参考https://xuxinkun.github.io/2016/03/21/idea-svn/

安装IDE后导入k8s源码,配置对应的GOPATH,我的如下图所示

 

image.png

2) 下载k8s源码

我fork了当前的github代码,https://github.com/shinepengwei/kubernetes

直接编译运行kubernetes/cmd/kube-apiserver.go,会提示找不到GetOpenAPIDefinitions,这东西是OpenAPI的描述性文件,是在make阶段生成的。

3) 从linux拷贝文件

第五步make时会生成/root/go/src/k8s.io/kubernetes/pkg/generated/openapizz_generated.openapi.go,把它拷贝到windows对应的目录。

4) 安装etcd

windows下直接下载etcd的执行文件https://github.com/coreos/etcd/releases,然后执行,会自动开放2379端口。

5) 运行调试

编译运行kubernetes/cmd/kube-apiserver.go已经可以跑了,提示没有配置etcd服务器地址。加一下"http://localhost:2379"这个地址就好了。

这样就可以在windows的IDE下设断点调试执行api-server了,这样阅读代码就方便多了。不过api-server的testcase在windows下并不能全部正常执行,毕竟是linux程序。



作者:水风
链接:https://www.jianshu.com/p/b90712911ed3
 

你可能感兴趣的:(k8s源码)