-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Kubernetes源碼剖析

( 簡體 字)
作者:鄭東旭類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社Kubernetes源碼剖析 3dWoo書號: 52872
詢問書籍請說出此書號!

有庫存
NT售價: 445

出版日:6/1/2020
頁數:376
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121389146
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

近幾年,容器技術越來越普及。據Gartner預估,到2022年,全球將有75%的公司使用容器技術,而在2017年,這個比例還不到20%,這說明容器技術的發展非常迅速。容器技術的火熱引發了容器編排技術的發展,目前最受歡迎的容器編排系統是Kubernetes,其引領著技術潮流,用于應對生產環境中編排容器所需的額外復雜度及成本。Kubernetes系統幫助企業加快了容器編排的速度,并實現了對多容器集群的大規模管理。它允許持續集成和交付、網絡處理、服務發現及存儲服務等,并具有在多云環境下進行操作的能力。
很多人都在說掌控了Kubernetes等于掌控了云計算的未來,這是為什么呢?在過去的幾年里,Kubernetes發展飛速,社區也隨之壯大,截至本書截稿時,Kubernetes項目在GitHub上已有接近6萬個Star,擁有8萬多次提交量。
Kubernetes系統已經越來越成熟,很多企業對它的應用從試水階段逐步走向大規模落地階段,但隨著Kubernetes系統越來越穩定、成熟,代碼的迭代能力逐漸變弱了。底層代碼的成熟和健壯能夠支撐更大的上層應用,這便讓更多優秀的生態應用圍繞著Kubernetes系統各自發展。這得益于Kubernetes系統的高擴展性,Kubernetes越來越像一個系統核心,對外提供通用接口,實現了眾多標準化。另外,Kubernetes得到了許多云服務提供商(Cloud Provider)的支持,例如Google、Cisco、VMware、Microsoft、Amazon及許多其他大型公司。
建議讀者在閱讀Kubernetes源碼的過程中,學習一些關于設計模式(Design Pattern)的知識,這樣有助于大家理解源碼的實現原理,而非只是泛泛地看代碼。例如,在Go語言中常用NewXXX函數來實例化相關類,在設計模式中,其被稱為簡單工廠模式,該設計模式在Go語言中替代了其他語言中的構造函數功能。不同語言的設計模式原理基本相同,只是在語法實現方式上有所不同。對于Go語言的設計模式,大家可以參考Go Design Pattern(參見鏈接[1])。
學習Kubernetes代碼庫并不容易,它擁有大量的源碼,學習過程會比較枯燥,但通過對源碼的學習,我們一定會收益良多。本書將基于Kubernetes 1.14.0版本來深入研究和分析Kubernetes源碼的關鍵部分,希望能對讀者有所幫助。建議讀者在閱讀本書的同時參考Kubernetes源碼文件,這樣學習效果更佳。
最后,謹以此書獻給我的愛人和我剛出世的女兒。
聯系作者
由于作者時間與水平有限,因此書中難免出現遺漏或錯誤,如果讀者發現相關問題,請及時與我聯系。非常希望與大家共同學習和交流。
本書涉及的鏈接說明
為了保證書中涉及的相關鏈接可以實時更新,特地將“鏈接地址”文檔放于博文視點官方網站,如書中標有“參見鏈接[1]”“參見鏈接[2]”等字樣時,可在該文檔中查詢相關鏈接。讀者可下載或通過“讀者服務”中提供的方式獲取 “鏈接地址”文檔。
讀者服務
掃碼回復:38914
√ 獲取博文視點學院20元付費內容抵扣券
√ 加入讀者交流群,與更多讀者互動
√ 獲取本書配套下載文件(“鏈接地址”文檔)
√ 獲取免費增值資源
內容簡介:

本書主要分析了Kubernetes核心功能的實現原理,是一本幫助讀者了解Kubernetes架構設計及內部原理實現的書。由于Kubernetes代碼量較大,源碼不容易理解,所以本書將梳理相關知識點,幫助讀者快速學習。本書共分為8章,第1章簡要介紹了Kubernetes架構的核心組件,以及每個核心組件在架構中的作用;第2章主要介紹了Kubernetes構建過程中的源碼實現;第3章主要介紹了Kubernetes的核心數據結構定義及圍繞資源展開的核心功能;第4章主要介紹了kubectl命令行交互工具的實現機制;第5章主要介紹了client-go編程式交互工具的實現機制;第6章主要介紹了Etcd存儲的核心實現;第7章主要介紹了kube-apiserver組件的核心實現;第8章主要介紹了kube-scheduler組件的核心實現。本書適合云計算領域的相關技術人員、Kubernetes開發者、Go語言開發者等閱讀。
目錄:

第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 Tags 27
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 WorkQueue 162
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 資源鎖 358
8.8.2 領導者選舉過程 360
序: