环境准备
获取源码
Github地址:https://github.com/kubernetes/kubernetes
当前的commit ID 是 e91556c62f4d0a597c712af1e7c168b58eb20eba
首先,找到本机的 $GOPATH
目录
$ echo $GOPATH
/usr/local/Cellar/go/1.12.1
(如果本机未安装go开发环境,请参考 Go开发环境搭建 完成安装)
然后在 $GOPATH/src
目录下创建k8s.io
文件夹,进入k8s.io
文件夹,执行git clone
从 Github 克隆Kubernetes源码:
$ git clone https://github.com/kubernetes/kubernetes.git
正克隆到 'kubernetes'...
remote: Enumerating objects: 275, done.
remote: Counting objects: 100% (275/275), done.
remote: Compressing objects: 100% (150/150), done.
remote: Total 955529 (delta 145), reused 125 (delta 125), pack-reused 955254
接收对象中: 100% (955529/955529), 639.76 MiB | 83.00 KiB/s, 完成.
处理 delta 中: 100% (666882/666882), 完成.
正在检出文件: 100% (19136/19136), 完成.
安装GoLand
下载地址:https://www.jetbrains.com/go/download/
下载之后双击安装即可。
GoLand在不激活的情况下,只能试用30天。如果想免费获得永久试用权,可以通过 http://idea.lanyus.com/ 获取激活码来免费激活。
导入源码
打开GoLand,点击Open Project,选择Kubernetes源码所在目录就可以导入源码。
目录结构
目录 | 说明 |
---|---|
api | 输出接口文档用 |
build | 构建脚本 |
cmd | 所有的二进制可执行文件入口代码,例如apiserver/scheduler/kubelet |
pkg | 项目代码主目录,cmd的只是个入口,这里是所有的具体实现 |
plugin | 插件,k8s认为调度器是插件的一部分,所以调度器的代码在这里 |
release | 应该是Google发版本用的? |
test | 测试相关的工具 |
third_party | 一些第三方工具,应该不是强依赖的? |
docs | 文档,包括了用户文档、管理员文档、设计、新功能提议 |
example | 使用案例 |
Godeps | 项目中依赖使用的Go第三方包,例如docker客户端SDK,rest等 |
hack | 工具箱,各种编译、构建、测试、校验的脚本都在这里面 |
源码编译
$cd $GOPATH/src/k8s.io/kubernetes
$ make generated_files
+++ [0617 19:52:42] Building go targets for darwin/amd64:
./vendor/k8s.io/code-generator/cmd/deepcopy-gen
+++ [0617 19:52:53] Building go targets for darwin/amd64:
./vendor/k8s.io/code-generator/cmd/defaulter-gen
+++ [0617 19:53:01] Building go targets for darwin/amd64:
./vendor/k8s.io/code-generator/cmd/conversion-gen
+++ [0617 19:53:21] Building go targets for darwin/amd64:
./vendor/k8s.io/kube-openapi/cmd/openapi-gen
+++ [0617 19:53:32] Building go targets for darwin/amd64:
./vendor/github.com/jteeuwen/go-bindata/go-bindata
网友评论