ps:本來應該先發這一篇,再開始講cobra的,昨天不小心先把 cobra發出去了,今天補上源碼概覽~
如上,我們下載好后切換到1.10版本的分支,項目目錄結構是這樣的(目錄部分)。有很多,我們先不糾結每一個目錄的作用,看關鍵的幾個先:
1、入口
可以看到我們最熟悉的幾個組件都在,每一個目錄打開都有一個go文件,里面是對應的main函數。
2、主要功能實現
可以很容易發現,pkg目錄下對應各個組件的實現邏輯。
3、依賴
隨便打開幾個源碼文件可以看到import了k8s.io中的很多項目,這些項目在github上的README.md中都會提到代碼其實在k8s項目的:
可以理解成后續這些項目可能會獨立出去,但是暫時還是由kubernetes項目來維護。但是其他組件依賴這些項目中的代碼時,import路徑已經是外部的項目路徑了。另外一個需要留意的是vendor:
任何一個合格的gopher都應該知道vendor的作用,這里我不再贅述了。總之需要有這樣一個意識,后面讀源碼時所有的依賴問題,都在staging和vendor中!不清楚vendor用法的gopher們需要自己私下補補課了,加油!
ok,下一講就開始看scheduler源碼了,入口在哪里呢?自然是:
$GOPATH\src\k8s.io\kubernetes\cmd\kube-scheduler\scheduler.go