icon-cookie
The website uses cookies to optimize your user experience. Using this website grants us the permission to collect certain information essential to the provision of our services to you, but you may change the cookie settings within your browser any time you wish. Learn more
I agree
blank_error__heading
blank_error__body
Text direction?

Kubernetes源码编译

环境准备

Kubernetes编译依赖Go环境和gcc,所以编译之前需要先下载好基本环境

Golang安装

Golang下载在官网Golang,当前最新版本为1.12(具体安装以版本为准)
1、wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
2、tar -zxf go1.12.linux-amd64.tar.gz -C /usr/local/
3、export PATH=$PATH:/usr/local/go/bin
检查是否安装成功

gcc安装

Centos下gcc可以直接使用yum安装yum -y install gcc

编译

Kubernetes支持容器编译和主机编译,主机编译需要安装基本环境(Go、gcc),容器编译使用Docker的Dockerfile编译,也是比较流行的方式。编译对内存有一定的要求,建议机器内存至少在4G以上。

主机编译

主机编译可以直接使用kubernetes自带的Makefile,使用make即可编译。但是由于编译生成的二进制较多,一般情况下对不同的模块可以进行单独的编译,以kubelet为例:
1、配置编译环境:将下载好的kubernetes源码拷贝到$GOPATH/src/k8s.io目录,进入$GOPATH/src/k8s.io/kubernetes目录,GOPATH为/root/kube

2、使用make all WHAT=cmd/kubelet GOFLAGS=-v命令编译kubelet模块
3、编译生成的二进制包在_output/bin目录下 如果想要知道编译使用的脚本,可以通过查看Makefile文件代码,查看编译执行脚本

容器编译

容器编译由于使用Dockerfile,基础镜像访问的是k8s.gcr.io,国内访问不了

可以先将镜像下载下来,重新打tag,这里以阿里云为例:
1、docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross:v1.11.5-1
2、docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross:v1.11.5-1 k8s.gcr.io/kube-cross:v1.11.5-1
执行./build/run.sh hack/build-go.sh cmd/kubelet单独编译kubelet模块,会看到一系列的输出,最终在_output/dockerized/bin/linux/amd64目录下,可以查看到编译后的二进制包。

Measure
Measure
Related Notes
Get a free MyMarkup account to save this article and view it later on any device.
Create account

End User License Agreement

Summary | 3 Annotations
一般情况下对不同的模块可以进行单独的编译
2020/08/06 01:36
主机编译
2020/08/06 01:39
容器编译
2020/08/06 01:39