100 - k8s源碼分析-准備工作


今天我們開始講kubernetes的源碼!

之前的其他開源項目還沒有說完,后續會陸陸續續更新,我們把主線先放到k8s的源碼上。

之前我想詳細講解每一行k8s源碼,但是越看越發現一個大型開源項目如果拘泥於每一行的邏輯,很容易把戰線拉得太長,最后失去興趣。所以今天我們先聊聊源碼該怎么看。

1、目標

我們為什么要看k8s源碼?

我認為無非是提升golang功力、深入k8s原理、參與k8s社區,最后成為一個資深的雲計算技術人,享受技術的樂趣(當然雲計算技術棧之大不是一個k8s所能代表的,但是顯然雲計算已經離不開k8s,有能力參與k8s社區的工程師后續繼續深入各種cncf技術也會輕松很多,cncf里涉及的各種技術基本奠定了paas,或者說容器雲的基礎)。

 

2、方法

第一步:熟悉k8s的基本功能,理解各個組件的分工,做到心中有數,但是不拘泥於掌握每一個功能細節,因為很多特性在日常開發中很難用到(比如各種alpha階段的api,生產中不會讓用的)。

第二步:選定第一個要深入研究的組件,概覽其支持的所有子命令和flag,知道該組件能實現哪些功能(知道基於什么實現,和哪些組件打交道),比如看kube-proxy至少先知道是用iptables實現的,得先補補iptables的知識。

第三步:選定源碼版本,不要追求master分支,天天變想想也心累啊!建議選一個相對新的,或者是你們公司正在使用的版本

第四步:准備編譯、測試環境。也就是一個至少能夠把你看的組件編譯出來,能夠運行起來后debug的環境,這樣才能在debug中看各種你在讀源碼時不理解的對象在運行中到底存了哪些數據。

第五步:最快的速度抓住代碼主線,泛讀源碼。

第六步:針對特定功能精讀,調試,深入理解。

第七步:整體精讀,適當深入三方庫,公共庫,繪制整理單個組件架構圖、流程圖等,幫助自己理解整個組件工作全流程,在平時使用中遇到bug后能夠快速反應過來是哪個模塊的問題。

最后:讀完所有組件后融會貫通,理解各種公共庫的抽取邏輯,整個k8s了然於胸!

 

今天准備啥?

我們選擇從1.10版本入手,一方面是目前1.9及之前版本的資料比較多,1.10是不久的將來資料會比較豐富,用戶基數比較多的一個版本,所以等到多數人看到本教程的時候,有不懂的地方到網上查時相對1.12這種新版會更輕松。另外是我們在項目中選型用了1.10版本,在近一兩年工作中我主要使用的也是1.10版本(當然社區新特性會關注,參與社區也是跟着master走)。

今天我們需要下載好1.10版本的源碼,准備go開發環境。

->下代碼:

$ git clone https://github.com/kubernetes/kubernetes.git

->本地路徑:

$ D:\go\src\k8s.io\kubernetes

->gopath:

$ D:\go\src

ok,go開發環境配置默認大家都是會的,不然也不適合開始后面的學習。

kubernetes的編譯和debug環境后面我們再准備,下一講我們先開始過scheduler組件的邏輯,熟悉代碼后再准備環境開始debug。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM