Kubernetes 源码学习之一: 下载和编译源码
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
《Kubernetes 源码学习》系列是我在学习 Kubernetes 过程中的收获和总结,希望能对读者您起到参考作用,也希望得到您的宝贵意见和指导,共同进步;
本文是系列文章的第一篇,实战 Kubernetes 源码的下载和编译,这项技能会在后面的深入学习过程中用到,修改和运行源码用来验证自己的推测,是学习的常用手段;
系列文章链接汇总
关于 Kubernetes 版本
整个系列文章使用的源码和环境都是 1.13 版本;
准备环境
操作系统:CentOS 7.6.1810
go 版本:1.12
下载源码
确保 GO 环境已经设置完成,执行以下命令,创建目录用于存放 Kubernetes 源码:
进入目录 $GOPATH/src/k8s.io,执行以下命令即可开始下载:
提示:源码文件达到了八百多兆,下载时间会很长,推荐通过修改 host 的方法加速 github 下载,具体方法请自行搜索;
下载完毕后,k8s.io 目录下出现一个名为 kubernetes 的文件夹,里面内容如下:
全量编译
全量编译对硬件有一定要求(实测 i5-8400 处理器,10G 内存可以编译通过),若编译时出现严重卡顿和内存不足请按"Ctrl+c"退出:
进入目录**$GOPATH/src/k8s.io/kubernetes**,执行以下命令即可全量构建,并且构建结果只包含 linux 平台的:
编译过程中,会出现 CPU 或内存消耗突然增加的状况,如下图,link 进程消耗内存比较多,10G 的内存基本耗尽:
过程有些耗时请耐心等待(我的机器用了 11 分钟完成),构建完成后控制台输出以下内容:
在 $GOPATH/src/k8s.io/kubernetes/_output 目录下可以见到构建结果:
以上就是全量编译构建的过程,得到的结果只适用于 linux 平台;
修改源码再编译
接下来修改源码,再运行编译的结果试试:
本次要修改的是 kubectl 命令的源码,在启动 kubectl 命令的时候在控制台打印一段内容;
清除前面的构建结果,进入目录 $GOPATH/src/k8s.io/kubernetes,执行命令 make clean:
kubectl 命令对应的源码文件:$GOPATH/src/k8s.io/kubernetes/cmd/kubectl/kubectl.go,用 vim 打开此文件,增加 init 方法:
修改后的效果如下图所示:
在目录 $GOPATH/src/k8s.io/kubernetes 执行以下命令,就会构建 linux 平台下的 kubectl 文件:
构建完成后控制台输出如下:
在目录 $GOPATH/src/k8s.io/kubernetes/_output/bin,可以见到最新构建的 kubectl 文件,执行命令 $GOPATH/src/k8s.io/kubernetes/_output/bin/kubectl,可见以下内容:
可见之前修改的代码已经生效;
至此,Kubernetes1.13 版本源码下载和编译我们都实战过一遍了,后面的文章我们一起继续学习和实战 Kubernetes;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/13d1f553634d3d36c7cde978c】。文章转载请联系作者。
评论