首先本文所有的 source code 基於 kubernetes 1.19 版本,所有 source code 為了版面的整潔會精簡掉部分 log 相關的程式碼,僅保留核心邏輯,如果有見解錯誤的地方,還麻煩觀看本文的大大們提出,感謝!
kubernetes 中封裝了非常多的基本的 library 例如 clock , channel , waits …等等,我們從 source code 學習 kubernetes 的行為時常常會遇到這個 library 跟基本的 library 非常像但是又覺得跟基本的 library 使用起來有點不一樣,本篇文章會把我目前看到被封裝過的 library 進行整理。
utils tool
- utilruntime
- 主要處理 runtime crash 的錯誤捕捉
- wait.Group
- 主要處理 goroutine 的生命週期管理
- signals
- 主要處理 linux signal 的訊號捕捉
- sets
- 主要處理 set 類型的資料結構
- rand
- 主要處理 go 語言中 random 的生成
- cache
- 主要處理常用的 cache 方法,例如 LRU 以及 expiring
- diff
- 主要用來比較 string 或是 object 的異同處
之後若是在閱讀 kubernetes source code 有看到跟 utils tool 相關的 library 再補上來。
小結
Kubernetes 為了開發者方便以及統一各個開發者使用基礎 library 的使用方式,對這些基礎的進行了封裝形成了 utils tool。
我們若要了解 kubernetes 的運作原理,認識這些 utils tool 是不可避免的,後續會花幾個章節整理一下尚屬提到的幾個 utils tool,若是描述的不正確或是理解有錯希望觀看本文的大大嗎可以不吝嗇提出,感謝。