Kubernetes源碼剖析

Kubernetes源碼剖析

《Kubernetes源碼剖析》是一本2020年6月由電子工業出版社出版的圖書,作者是鄭東旭。本書從源碼層面介紹Kubernetes的技術圖書,從架構到源碼,細緻入微,全面詳盡

基本介紹

  • 中文名:Kubernetes源碼剖析
  • 作者:鄭東旭
  • 類別:計算機
  • 出版社:電子工業出版社
  • 出版時間:2020年6月
  • 頁數:376 頁
  • 定價:89 元
  • 開本:16 開
  • ISBN:9787121389146
內容簡介,圖書目錄,作者簡介,

內容簡介

《Kubernetes源碼剖析 》主要分析了Kubernetes核心功能的實現原理,是一本幫助讀者了解Kubernetes架構設計及內部原理實現的書。

圖書目錄

第1章 Kubernetes架構 1
1.1 Kubernetes的發展歷史 1
1.2 Kubernetes架構圖 2
1.3 Kubernetes各組件的功能 4
1.3.1 kubectl 5
1.3.2 client-go 5
1.3.3 kube-apiserver 5
1.3.4 kube-controller-manager 6
1.3.5 kube-scheduler 7
1.3.6 kubelet 7
1.3.7 kube-proxy 8
1.4 Kubernetes Project Layout設計 9
第2章 Kubernetes構建過程 13
2.1 構建方式 13
2.2 本地環境構建 15
2.2.1 一切都始於Makefile 16
2.2.2 本地構建過程 17
2.3 容器環境構建 18
2.4 Bazel環境構建 22
2.4.1 使用Bazel構建和測試Kubernetes源碼 23
2.4.2 Bazel的工作原理 25
2.5 代碼生成器 26
2.5.1 Tags27
2.5.2 deepcopy-gen代碼生成器 29
2.5.3 defaulter-gen代碼生成器 30
2.5.4 conversion-gen代碼生成器 32
2.5.5 openapi-gen代碼生成器 34
2.5.6 go-bindata代碼生成器 36
2.6 代碼生成過程 37
2.7 gengo代碼生成核心實現40
2.7.1 代碼生成邏輯與編譯器原理 41
2.7.2 收集Go包信息 42
2.7.3 代碼解析 45
2.7.4 類型系統 48
2.7.5 代碼生成 51
第3章 Kubernetes核心數據結構 57
3.1 Group、Version、Resource核心數據結構 57
3.2 ResourceList 59
3.3 Group 62
3.4 Version 63
3.5 Resource 65
3.5.1 資源外部版本與內部版本 66
3.5.2 資原始碼定義 68
3.5.3 將資源註冊到資源註冊表中 71
3.5.4 資源首選版本 71
3.5.5 資源操作方法 72
3.5.6 資源與命名空間 75
3.5.7 自定義資源 77
3.5.8 資源對象描述檔案定義 78
3.6 Kubernetes內置資源全圖 79
3.7 runtime.Object類型基石 83
3.8 Unstructured數據 85
3.9 Scheme資源註冊表 87
3.9.1 Scheme資源註冊表數據結構 87
3.9.2 資源註冊表註冊方法 91
3.9.3 資源註冊表查詢方法 92
3.10 Codec編解碼器 92
3.10.1 Codec編解碼實例化 94
3.10.2 jsonSerializer與yamlSerializer序列化器 95
3.10.3 protobufSerializer序列化器98
3.11 Converter資源版本轉換器 100
3.11.1 Converter轉換器數據結構101
3.11.2 Converter註冊轉換函式 102
3.11.3 Converter資源版本轉換原理 104
第4章 kubectl命令行互動 111
4.1 kubectl命令行參數詳解 111
4.2 Cobra命令行參數解析 114
4.3 創建資源對象的過程 119
4.3.1 編寫資源對象描述檔案 120
4.3.2 實例化Factory接口 120
4.3.3 Builder構建資源對象 121
4.3.4 Visitor多層匿名函式嵌套 122
第5章 client-go編程式互動 128
5.1 client-go源碼結構 128
5.2 Client客戶端對象 129
5.2.1 kubeconfig配置管理 130
5.2.2 RESTClient客戶端 134
5.2.3 ClientSet客戶端 137
5.2.4 DynamicClient客戶端 139
5.2.5 DiscoveryClient客戶端 141
5.3 Informer機制 144
5.3.1 Informer機制架構設計145
5.3.2 Reflector 149
5.3.3 DeltaFIFO 154
5.3.4 Indexer 158
5.4 WorkQueue162
5.4.1 FIFO佇列 163
5.4.2 延遲佇列 165
5.4.3 限速佇列 166
5.5 EventBroadcaster事件管理器 170
5.6 代碼生成器 176
5.6.1 client-gen代碼生成器 176
5.6.2 lister-gen代碼生成器 180
5.6.3 informer-gen代碼生成器 182
5.7 其他客戶端 185
第6章 Etcd存儲核心實現 187
6.1 Etcd存儲架構設計 187
6.2 RESTStorage存儲服務通用接口 189
6.3 RegistryStore存儲服務通用操作 190
6.4 Storage.Interface通用存儲接口 192
6.5 CacherStorage快取層 194
6.5.1 CacherStorage快取層設計 195
6.5.2 ResourceVersion資源版本號 199
6.5.3 watchCache快取滑動視窗 201
6.6 UnderlyingStorage底層存儲對象 204
6.7 Codec編解碼數據 206
6.8 Strategy預處理209
6.8.1 創建資源對象時的預處理操作 209
6.8.2 更新資源對象時的預處理操作 211
6.8.3 刪除資源對象時的預處理操作 212
6.8.4 導出資源對象時的預處理操作 213
第7章 kube-apiserver核心實現 214
7.1 熱身概念 215
7.1.1 go-restful核心原理 215
7.1.2 一次HTTP請求的完整生命周期 218
7.1.3 OpenAPI/Swagger核心原理 219
7.1.4 HTTPS核心原理 222
7.1.5 gRPC核心原理 224
7.1.6 go-to-protobuf代碼生成器 225
7.2 kube-apiserver命令行參數詳解 231
7.3 kube-apiserver架構設計詳解 243
7.4 kube-apiserver啟動流程 244
7.4.1 資源註冊 245
7.4.2 Cobra命令行參數解析 248
7.4.3 創建APIServer通用配置 249
7.4.4 創建APIExtensionsServer 257
7.4.5 創建KubeAPIServer 261
7.4.6 創建AggregatorServer 266
7.4.7 創建GenericAPIServer 269
7.4.8 啟動HTTP服務 270
7.4.9 啟動HTTPS服務 272
7.5 許可權控制 272
7.6 認證 273
7.6.1 BasicAuth認證 276
7.6.2 ClientCA認證 277
7.6.3 TokenAuth認證 278
7.6.4 BootstrapToken認證 279
7.6.5 RequestHeader認證 281
7.6.6 WebhookTokenAuth認證 282
7.6.7 Anonymous認證 284
7.6.8 OIDC認證 285
7.6.9 ServiceAccountAuth認證 288
7.7 授權 291
7.7.1 AlwaysAllow授權 295
7.7.2 AlwaysDeny授權 296
7.7.3 ABAC授權 297
7.7.4 Webhook授權298
7.7.5 RBAC授權 300
7.7.6 Node授權 309
7.8 準入控制器 310
7.8.1 AlwaysPullImages準入控制器 315
7.8.2 PodNodeSelector準入控制器 316
7.9 進程信號處理機制 318
7.9.1 常駐進程實現 318
7.9.2 進程的優雅關閉 319
7.9.3 向systemd報告進程狀態 320
第8章 kube-scheduler核心實現 321
8.1 kube-scheduler命令行參數詳解 321
8.2 kube-scheduler架構設計詳解 324
8.3 kube-scheduler組件的啟動流程 326
8.3.1 內置調度算法的註冊 327
8.3.2 Cobra命令行參數解析 328
8.3.3 實例化Scheduler對象 329
8.3.4 運行EventBroadcaster事件管理器 331
8.3.5 運行HTTP或HTTPS服務 331
8.3.6 運行Informer同步資源 332
8.3.7 領導者選舉實例化 332
8.3.8 運行sched.Run調度器 333
8.4 優先權與搶占機制 333
8.5 親和性調度 335
8.5.1 NodeAffinity 336
8.5.2 PodAffinity 337
8.5.3 PodAntiAffinity 338
8.6 內置調度算法 339
8.6.1 預選調度算法 339
8.6.2 優選調度算法 340
8.7 調度器核心實現 342
8.7.1 調度器運行流程 342
8.7.2 調度過程 343
8.7.3 Preempt搶占機制 351
8.7.4 bind綁定機制356
8.8 領導者選舉機制 357
8.8.1 資源鎖 3588.8.2 領導者選舉過程 360

作者簡介

鄭東旭(Derek Zheng),BFE開源項目的作者之一,擅長Linux下高性能伺服器的開發,對雲計算、區塊鏈相關技術領域有深刻的理解。

相關詞條

熱門詞條

聯絡我們