Kubernetes源码编译

环境准备

Kubernetes编译依赖Go环境和gcc,因此编译以前须要先下载好基本环境
linux

Golang安装

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

gcc安装

Centos下gcc能够直接使用yum安装yum -y install gccdocker

编译

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,国内访问不了 阿里云

能够先将镜像下载下来,从新打tag,这里以阿里云为例:
一、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目录下,能够查看到编译后的二进制包。
相关文章
相关标签/搜索