編譯kubernetes并在windows下運(yùn)行調(diào)試api-server

1 在linux下編譯kubernetes

1) 安裝GO

下載Go并且配置相關(guān)環(huán)境變量,版本要求1.10+
https://golang.org/dl/

Download the archive and extract it into /usr/local, creating a Go tree in /usr/local/go. For example:

tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz

Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile:

export PATH=$PATH:/usr/local/go/bin

配置環(huán)境變量GOPath等,默認(rèn)是/root/go。

2) 下載k8s源碼

可以直接下載k8s源碼,也可以使用git clone,我是下的k8s源碼:
https://github.com/kubernetes/kubernetes/releases
我用的是目前的最新版:
v1.11.0-alpha.2

下載后,解壓到到gopath/src/k8s.io/.
tar -xzf

3) 安裝相關(guān)工具

godep工具

go get github.com/tools/godep

安裝hg工具

yum install mercurial

(否則會(huì)出godep: error downloading dep (bitbucket.org/ww/goautoneg): exec: "hg": executable file not found in $PATH)

4) godep獲取依賴(lài)包

cd /usr/lib/go-1.6/src/k8s.io/kubernetes

godep restore

這里會(huì)卡很久,我就跳過(guò)了。應(yīng)該用make會(huì)自動(dòng)做這件事。

5) 執(zhí)行編譯

直接在kubernetes目錄下,執(zhí)行make
這里需要4G+的內(nèi)存,最好8G,否則會(huì)出現(xiàn)錯(cuò)誤。

6) 執(zhí)行單元測(cè)試。

可以執(zhí)行g(shù)o test。

go test -v k8s.io/kubernetes/pkg/kubelet

也可以執(zhí)行

make test WHAT=./pkg/kubelet

2 在windows跑apiserver

1) 下載Go的IDE,推薦使用IDEA+go插件。

下載和配置參考https://xuxinkun.github.io/2016/03/21/idea-svn/

安裝IDE后導(dǎo)入k8s源碼,配置對(duì)應(yīng)的GOPATH,我的如下圖所示


image.png

2) 下載k8s源碼

我fork了當(dāng)前的github代碼,https://github.com/shinepengwei/kubernetes

直接編譯運(yùn)行kubernetes/cmd/kube-apiserver.go,會(huì)提示找不到GetOpenAPIDefinitions,這東西是OpenAPI的描述性文件,是在make階段生成的。

3) 從linux拷貝文件

第五步make時(shí)會(huì)生成/root/go/src/k8s.io/kubernetes/pkg/generated/openapizz_generated.openapi.go,把它拷貝到windows對(duì)應(yīng)的目錄。

4) 安裝etcd

windows下直接下載etcd的執(zhí)行文件https://github.com/coreos/etcd/releases,然后執(zhí)行,會(huì)自動(dòng)開(kāi)放2379端口。

5) 運(yùn)行調(diào)試

編譯運(yùn)行kubernetes/cmd/kube-apiserver.go已經(jīng)可以跑了,提示沒(méi)有配置etcd服務(wù)器地址。加一下"http://localhost:2379"這個(gè)地址就好了。

這樣就可以在windows的IDE下設(shè)斷點(diǎn)調(diào)試執(zhí)行api-server了,這樣閱讀代碼就方便多了。不過(guò)api-server的testcase在windows下并不能全部正常執(zhí)行,畢竟是linux程序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • docker實(shí)現(xiàn)了更便捷的單機(jī)容器虛擬化的管理, docker的位置處于操作系統(tǒng)層與應(yīng)用層之間; 相對(duì)傳統(tǒng)虛擬化(...
    Harvey_L閱讀 20,144評(píng)論 3 44
  • Kubernetes部屬說(shuō)明 環(huán)境準(zhǔn)備 資料準(zhǔn)備 開(kāi)始部屬 編寫(xiě)yaml文件,用于部屬Kubenetes基礎(chǔ)容器e...
    俊逸之光閱讀 2,772評(píng)論 2 0
  • Kubernetes作為容器應(yīng)用的管理中心,通過(guò)對(duì)Pod的數(shù)量進(jìn)行監(jiān)控,并且根據(jù)主機(jī)或容器失效的狀態(tài)將新的Pod調(diào)...
    輝耀輝耀閱讀 4,684評(píng)論 0 13
  • 懷念杜甫之久詩(shī),新來(lái)杜甫后人留人間。觀賞杜甫之詩(shī)傳播道人世間。新詩(shī)自有杜甫在,杜甫自有新詩(shī)在。
    王密亮閱讀 263評(píng)論 0 1
  • 今天下午我去排練了,到那里去我看見(jiàn)那里有好多同學(xué),老師來(lái)了我們就排隊(duì)去排練了 ,我們排練排的是《我驕傲我是中國(guó)人》...
    李嘉寶1閱讀 210評(píng)論 0 0

友情鏈接更多精彩內(nèi)容