Kubernetes编译依赖Go环境和gcc,因此编译以前须要先下载好基本环境
linux
Golang下载在官网Golang,当前最新版本为1.12(具体安装以版本为准)
一、wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz
二、tar -zxf go1.12.linux-amd64.tar.gz -C /usr/local/
三、export PATH=$PATH:/usr/local/go/bin
检查是否安装成功
golang
Centos下gcc能够直接使用yum安装yum -y install gcc
docker
Kubernetes支持容器编译和主机编译,主机编译须要安装基本环境(Go、gcc),容器编译使用Docker的Dockerfile编译,也是比较流行的方式。编译对内存有必定的要求,建议机器内存至少在4G以上。ui
主机编译能够直接使用kubernetes自带的Makefile,使用make
便可编译。可是因为编译生成的二进制较多,通常状况下对不一样的模块能够进行单独的编译,以kubelet
为例:
一、配置编译环境:将下载好的kubernetes源码拷贝到$GOPATH/src/k8s.io
目录,进入$GOPATH/src/k8s.io/kubernetes
目录,GOPATH为/root/kube
google
make all WHAT=cmd/kubelet GOFLAGS=-v
命令编译
kubelet
模块
_output/bin
目录下
Makefile
文件代码,查看编译执行脚本
容器编译因为使用Dockerfile,基础镜像访问的是k8s.gcr.io
,国内访问不了 阿里云
一、docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-cross:v1.11.5-1
二、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
目录下,能够查看到编译后的二进制包。