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目錄下,能夠查看到編譯後的二進制包。
相關文章
相關標籤/搜索