本篇文章給大家分享的是有關(guān)如何順利完成Kubernetes源碼編譯,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)建站專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、可克達(dá)拉網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為可克達(dá)拉等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。為什么要編譯源碼 ?
Kubernetes是一個非常棒的容器集群管理平臺。通常情況下,我們并不需要修改K8S代碼即可直接使用。但如果,我們在環(huán)境中發(fā)現(xiàn)了某個問題/缺陷,或按照特定業(yè)務(wù)需求需要修改K8S代碼時,如定制Kubelet的StopContainer 邏輯、kube-scheduler的pod調(diào)度邏輯等。為了讓修改生效,那么就需要編譯K8S代碼了。
Kubernetes源碼編譯,大致分為本地二進(jìn)制可執(zhí)行文件編譯和docker鏡像編譯兩種。由于在我們的環(huán)境中,Kubernetes是由Docker容器方式運行的。故此我們需要采用后面一種方式編譯,即鏡像編譯。
由于Kubernetes每個組件服務(wù)的鏡像Dockerfile文件是由Kubernetes源碼自動生成的,因此,社區(qū)并未提供每個組件的鏡像Dockerfile文件。編譯本地二進(jìn)制可執(zhí)行文件很簡單,也更直接。而docker鏡像編譯資料卻很少,且礙于某種特殊網(wǎng)絡(luò)原因,會導(dǎo)致失敗。此處,將介紹如何順利的完成K8S鏡像編譯。
安裝依賴
安裝Golang
指定分支,下載 Kubernetes 源代碼(默認(rèn)$GOPATH目錄為/root/go/)
本地二進(jìn)制文件編譯Kubernetes(方法一)
修改運行平臺配置參數(shù)(可選)
根據(jù)自己的運行平臺(linux/amd64)修改hack/lib/golang.sh,把KUBE_SERVER_PLATFORMS,KUBE_CLIENT_PLATFORMS和KUBE_TEST_PLATFORMS中除linux/amd64以外的其他平臺注釋掉,以此來減少編譯所用時間。
編譯源碼
進(jìn)入Kubernetes根目錄下
KUBE_BUILD_PLATFORMS指定目標(biāo)平臺,WHAT指定編譯的組件,通過GOFLAGS和GOGCFLAGS傳入編譯時參數(shù),如此處編譯kubelet 組件。
如果不指定WHAT,則編譯全部。
make all是在本地環(huán)境中進(jìn)行編譯的。
make release和make quick-release在容器中完成編譯、打包成docker鏡像。
編譯kubelet這部分代碼,也可執(zhí)行make clean && make WHAT=cmd/kubelet
檢查編譯成果
編譯過程較長,請耐心等待,編譯后的文件在kubernetes/_output里。
或者進(jìn)入cmd/kubelet (以kubelet為例子)
執(zhí)行g(shù)o build -v命令,如果沒出錯,會生成可執(zhí)行文件kubelet
生成的可執(zhí)行文件在當(dāng)前文件夾下面
Docker鏡像編譯Kubernetes(方法二)
查看kube-cross的TAG版本號
查看debian_iptables_version版本號
這里,我使用DockerHub的Auto build功能,來構(gòu)建K8s鏡像。自然將編譯需要用到的base鏡像,放在了DockerHub上(也算是為促進(jìn)國內(nèi)K8s源碼docker編譯貢獻(xiàn)綿薄之力吧?。?/p>
把build/lib/release.sh中的–pull去掉,避免構(gòu)建鏡像繼續(xù)拉取鏡像:
編輯文件hack/lib/version.sh
將KUBE_GIT_TREE_STATE=”dirty” 改為 KUBE_GIT_TREE_STATE=”clean”,確保版本號干凈。
執(zhí)行編譯命令
其中KUBE_BUILD_PLATFORMS=linux/amd64指定目標(biāo)平臺為linux/amd64,GOFLAGS=-v開啟verbose日志,GOGCFLAGS=”-N -l”禁止編譯優(yōu)化和內(nèi)聯(lián),減小可執(zhí)行程序大小。
編譯的K8s Docker鏡像以壓縮包的形式發(fā)布在_output/release-tars目錄中
使用編譯鏡像
等待編譯完成后,在_output/release-stage/server/linux-amd64/kubernetes/server/bin/目錄下保存了編譯生成的二進(jìn)制可執(zhí)行程序和docker鏡像tar包。如導(dǎo)入kube-apiserver.tar鏡像,并更新環(huán)境上部署的kube-apiserver鏡像。
整個編譯過程結(jié)束后,現(xiàn)在就可以到master節(jié)點上,修改/etc/kubernetes/manifests/kube-apiserver.yaml描述文件中的image,修改完立即生效。
以上就是如何順利完成Kubernetes源碼編譯,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。
本文標(biāo)題:如何順利完成Kubernetes源碼編譯-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article6/ccsjig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)頁設(shè)計公司、微信小程序、App設(shè)計、網(wǎng)站設(shè)計、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容