100 k8s原始碼分析 準備工作

2022-07-04 20:33:11 字數 1366 閱讀 8458

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

之前的其他開源專案還沒有說完,後續會陸陸續續更新,我們把主線先放到k8s的原始碼上。

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

我們為什麼要看k8s原始碼?

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

第一步:熟悉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走)。

->下**:

$ git clone 

->本地路徑:

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

->gopath:

$ d:\go\src

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

kubernetes的編譯和debug環境後面我們再準備,下一講我們先開始過scheduler元件的邏輯,熟悉**後再準備環境開始debug。

k8s原始碼分析準備工作 原始碼準備

寫在前面 本文已過時,請移步 daniel hu s blog 作業系統 我們使用linux作為k8s原始碼分析和除錯環境,fedora centos ubuntu都行,我這裡使用fedora golang相關 mkdir p root go src k8s.io cd root go src k8...

spring原始碼分析 準備工作

該專案會不定期更新,所以 上可能會有變化。spring版本 5.1.0.build snapshot 會定期合併master分支,該版本號會有改變 在basebean包下建立 multiconditionbean 具體 如下 xml具體配置內容如下圖 通過以上配置就可以建立測試 進行測試了,測試 包...

k8s原始碼分析 pdf k8s原始碼分析之Cobra

一 cobra簡介 cobra 既是乙個用來建立強大的現代cli命令列的golang庫,也是乙個生成程式應用和命令列檔案的程式.cobra主要提供的功能 完全相容posix命令列模式 巢狀子命令subcommand 支援全域性,區域性,串聯flags 自動生成commands和flags的幫助資訊 ...