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
目錄下,能夠查看到編譯後的二進制包。