
整个系列文章使用的源码和环境都是1.13版本;
mkdir -p $GOPATH/src/k8s.iogit clone https://github.com/kubernetes/kubernetes -b release-1.13提示:源码文件达到了八百多兆,下载时间会很长,推荐通过修改host的方法加速github下载,具体方法请自行搜索; 3. 下载完毕后,k8s.io目录下出现一个名为kubernetes的文件夹,里面内容如下:
[root@golang ~]# ls $GOPATH/src/k8s.io
kubernetes
[root@golang ~]# ls $GOPATH/src/k8s.io/kubernetes
api CHANGELOG-1.12.md cmd docs LICENSE Makefile.generated_files pkg SECURITY_CONTACTS test vendor
build CHANGELOG.md code-of-conduct.md Godeps logo OWNERS plugin staging third_party WORKSPACE
BUILD.bazel cluster CONTRIBUTING.md hack Makefile OWNERS_ALIASES README.md SUPPORT.md translations全量编译对硬件有一定要求(实测i5-8400处理器,10G内存可以编译通过),若编译时出现严重卡顿和内存不足请按"Ctrl+c"退出:
KUBE_BUILD_PLATFORMS=linux/amd64 make
[root@golang kubernetes]# KUBE_BUILD_PLATFORMS=linux/amd64 make
+++ [0316 13:44:33] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/deepcopy-gen
+++ [0316 13:44:44] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/defaulter-gen
+++ [0316 13:44:48] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/conversion-gen
+++ [0316 13:44:53] Building go targets for linux/amd64:
./vendor/k8s.io/kube-openapi/cmd/openapi-gen
2019/03/16 13:45:00 Code for OpenAPI definitions generated
+++ [0316 13:45:00] Building go targets for linux/amd64:
./vendor/github.com/jteeuwen/go-bindata/go-bindata
+++ [0316 13:45:02] Building go targets for linux/amd64:
cmd/kube-proxy
cmd/kube-apiserver
cmd/kube-controller-manager
cmd/cloud-controller-manager
cmd/kubelet
cmd/kubeadm
cmd/hyperkube
cmd/kube-scheduler
vendor/k8s.io/apiextensions-apiserver
cluster/gce/gci/mounter
cmd/kubectl
cmd/gendocs
cmd/genkubedocs
cmd/genman
cmd/genyaml
cmd/genswaggertypedocs
cmd/linkcheck
vendor/github.com/onsi/ginkgo/ginkgo
test/e2e/e2e.test
cmd/kubemark
vendor/github.com/onsi/ginkgo/ginkgo
test/e2e_node/e2e_node.test[root@golang _output]# ls
bin local violations.report
[root@golang _output]# cd bin
[root@golang bin]# ls
apiextensions-apiserver deepcopy-gen e2e.test genman ginkgo hyperkube kube-controller-manager kubemark linkcheck
cloud-controller-manager defaulter-gen gendocs genswaggertypedocs go2make kubeadm kubectl kube-proxy mounter
conversion-gen e2e_node.test genkubedocs genyaml go-bindata kube-apiserver kubelet kube-scheduler openapi-gen以上就是全量编译构建的过程,得到的结果只适用于linux平台;
接下来修改源码,再运行编译的结果试试:
[root@golang kubernetes]# make clean
+++ [0316 13:12:24] Verifying Prerequisites....
+++ [0316 13:12:24] Removing _output directory
Removing pkg/generated/openapi/zz_generated.openapi.go ..
Removing test/e2e/generated/bindata.go ..func init() {
fmt.Println("你好,欢迎使用kubectl!")
}
KUBE_BUILD_PLATFORMS=linux/amd64 make WHAT=cmd/kubectl构建完成后控制台输出如下:
[root@golang kubernetes]# KUBE_BUILD_PLATFORMS=linux/amd64 make WHAT=cmd/kubectl
+++ [0316 11:49:25] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/deepcopy-gen
+++ [0316 11:49:30] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/defaulter-gen
+++ [0316 11:49:34] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/conversion-gen
+++ [0316 11:49:39] Building go targets for linux/amd64:
./vendor/k8s.io/kube-openapi/cmd/openapi-gen
2019/03/16 11:49:44 Code for OpenAPI definitions generated
+++ [0316 11:49:45] Building go targets for linux/amd64:
./vendor/github.com/jteeuwen/go-bindata/go-bindata
+++ [0316 11:49:46] Building go targets for linux/amd64:
cmd/kubectl[root@golang ~]# $GOPATH/src/k8s.io/kubernetes/_output/bin/kubectl
你好,欢迎使用kubectl!
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
...可见之前修改的代码已经生效;