如何使用Kubernetes源代码做编译构建

一、操作系统版本

CentOS 7.6.1810
Kubernetes v1.11.0

二、准备工作

1. 直接使用yum安装rsync和gcc

1
yum install -y git rsync gcc

2. 源码安装golang 1.10.2

详见官方文档

3. 克隆源代码到GOPATH的src目录下

1
2
3
4
5
6
cd $GOPATH/src/
mkdir -p k8s.io/
cd k8s.io/
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes/
git checkout -b v1.11.0 v1.11.0

三、构建过程记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[root@server01 kubernetes]# make clean
+++ [0107 11:01:28] Verifying Prerequisites....
+++ [0107 11:01:28] Removing _output directory
Removing pkg/generated/openapi/zz_generated.openapi.go ..
Removing pkg/generated/bindata.go ..
Removing test/e2e/generated/bindata.go ..
[root@server01 kubernetes]# KUBE_GIT_MAJOR="1" KUBE_GIT_MINOR="11" KUBE_GIT_VERSION="v1.11.0" KUBE_GIT_COMMIT="91e7b4fd31fcd3d5f436da26c980becec37ceefe" KUBE_GIT_TREE_STATE="clean" make all
+++ [0107 11:01:57] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/deepcopy-gen
+++ [0107 11:02:05] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/defaulter-gen
+++ [0107 11:02:09] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/conversion-gen
+++ [0107 11:02:13] Building go targets for linux/amd64:
./vendor/k8s.io/code-generator/cmd/openapi-gen
+++ [0107 11:02:19] Building go targets for linux/amd64:
./vendor/github.com/jteeuwen/go-bindata/go-bindata
+++ [0107 11:02:20] 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/kube-aggregator
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@server01 kubernetes]# ls -la _output/bin/
总用量 2323024
drwxr-xr-x. 2 root root 4096 1月 7 11:08 .
drwxr-xr-x. 3 root root 19 1月 7 11:01 ..
-rwxr-xr-x. 1 root root 59300539 1月 7 11:08 apiextensions-apiserver
-rwxr-xr-x. 1 root root 138056772 1月 7 11:08 cloud-controller-manager
-rwxr-xr-x. 1 root root 7691655 1月 7 11:02 conversion-gen
-rwxr-xr-x. 1 root root 7687498 1月 7 11:01 deepcopy-gen
-rwxr-xr-x. 1 root root 7665142 1月 7 11:02 defaulter-gen
-rwxr-xr-x. 1 root root 209978368 1月 7 11:08 e2e_node.test
-rwxr-xr-x. 1 root root 173425408 1月 7 11:08 e2e.test
-rwxr-xr-x. 1 root root 54135796 1月 7 11:08 gendocs
-rwxr-xr-x. 1 root root 226087352 1月 7 11:08 genkubedocs
-rwxr-xr-x. 1 root root 232056512 1月 7 11:08 genman
-rwxr-xr-x. 1 root root 5477486 1月 7 11:08 genswaggertypedocs
-rwxr-xr-x. 1 root root 54084772 1月 7 11:08 genyaml
-rwxr-xr-x. 1 root root 10641201 1月 7 11:08 ginkgo
-rwxr-xr-x. 1 root root 2831370 1月 7 11:02 go-bindata
-rwxr-xr-x. 1 root root 227335584 1月 7 11:08 hyperkube
-rwxr-xr-x. 1 root root 57251126 1月 7 11:08 kubeadm
-rwxr-xr-x. 1 root root 57912503 1月 7 11:08 kube-aggregator
-rwxr-xr-x. 1 root root 185160079 1月 7 11:08 kube-apiserver
-rwxr-xr-x. 1 root root 153806893 1月 7 11:08 kube-controller-manager
-rwxr-xr-x. 1 root root 55277901 1月 7 11:08 kubectl
-rwxr-xr-x. 1 root root 162729192 1月 7 11:08 kubelet
-rwxr-xr-x. 1 root root 160066432 1月 7 11:08 kubemark
-rwxr-xr-x. 1 root root 51920351 1月 7 11:08 kube-proxy
-rwxr-xr-x. 1 root root 55479582 1月 7 11:08 kube-scheduler
-rwxr-xr-x. 1 root root 6698678 1月 7 11:08 linkcheck
-rwxr-xr-x. 1 root root 2330265 1月 7 11:08 mounter
-rwxr-xr-x. 1 root root 13634378 1月 7 11:02 openapi-gen