Kubernetes源碼剖析

Kubernetes源碼剖析
定價:534
NT $ 465
  • 作者:鄭東旭
  • 出版社:電子工業出版社
  • 出版日期:2020-06-01
  • 語言:簡體中文
  • ISBN10:7121389142
  • ISBN13:9787121389146
  • 裝訂:平裝 / 376頁 / 16k / 19 x 26 x 1.88 cm / 普通級 / 單色印刷 / 初版
 

內容簡介

本書主要分析了Kubernetes核心功能的實現原理,是一本幫助讀者瞭解Kubernetes架構設計及內部原理實現的書。由於Kubernetes代碼量較大,源碼不容易理解,所以本書將梳理相關知識點,幫助讀者快速學習。
 
本書共分為8章,第1章簡要介紹了Kubernetes架構的核心元件,以及每個核心元件在架構中的作用;第2章主要介紹了Kubernetes構建過程中的源碼實現;第3章主要介紹了Kubernetes的核心資料結構定義及圍繞資源展開的核心功能;第4章主要介紹了kubectl命令列交互工具的實現機制;第5章主要介紹了client-go程式設計式交互工具的實現機制;第6章主要介紹了Etcd存儲的核心實現;第7章主要介紹了kube-apiserver組件的核心實現;第8章主要介紹了kube-scheduler組件的核心實現。
 

 

作者介紹

鄭東旭(Derek Zheng),BFE(萬億流量轉發引擎,https://github.com/baidu/bfe)開源專案的作者之一,擅長Linux下高性能伺服器的開發,對雲計算、區塊鏈相關技術領域有深刻的理解。

 

目錄

第1章Kubernetes架構1
1.1Kubernetes的發展歷史1
1.2Kubernetes架構圖2
1.3Kubernetes各組件的功能4
1.3.1kubectl5
1.3.2client-go5
1.3.3kube-apiserver5
1.3.4kube-controller-manager6
1.3.5kube-scheduler7
1.3.6kubelet7
1.3.7kube-proxy8
1.4KubernetesProjectLayout設計9

第2章Kubernetes構建過程13
2.1構建方式13
2.2本地環境構建15
2.2.1一切都始於Makefile16
2.2.2本地構建過程17
2.3容器環境構建18
2.4Bazel環境構建22
2.4.1使用Bazel構建和測試Kubernetes源碼23
2.4.2Bazel的工作原理25
2.5代碼生成器26
2.5.1Tags27
2.5.2deepcopy-gen代碼生成器29
2.5.3defaulter-gen代碼生成器30
2.5.4conversion-gen代碼生成器32
2.5.5openapi-gen代碼生成器34
2.5.6go-bindata代碼生成器36
2.6代碼生成過程37
2.7gengo代碼生成核心實現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.1Group、Version、Resource核心資料結構57
3.2ResourceList59
3.3Group62
3.4Version63
3.5Resource65
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.6Kubernetes內置資源全圖79
3.7runtime.Object類型基石83
3.8Unstructured數據85
3.9Scheme資源註冊表87
3.9.1Scheme資源註冊表資料結構87
3.9.2資源註冊表註冊方法91
3.9.3資源註冊表查詢方法92
3.10Codec轉碼器92
3.10.1Codec編解碼產生實體94
3.10.2jsonSerializer與yamlSerializer序列化器95
3.10.3protobufSerializer序列化器98
3.11Converter資源版本轉換器100
3.11.1Converter轉換器資料結構101
3.11.2Converter註冊轉換函數102
3.11.3Converter資源版本轉換原理104

第4章kubectl命令列交互111
4.1kubectl命令列參數詳解111
4.2Cobra命令列參數解析114
4.3創建資源物件的過程119
4.3.1編寫資源物件描述檔120
4.3.2產生實體Factory介面120
4.3.3Builder構建資源對象121
4.3.4Visitor多層匿名函數嵌套122

第5章client-go程式設計式交互128
5.1client-go源碼結構128
5.2Client用戶端對象129
5.2.1kubeconfig配置管理130
5.2.2RESTClient用戶端134
5.2.3ClientSet用戶端137
5.2.4DynamicClient用戶端139
5.2.5DiscoveryClient用戶端141
5.3Informer機制144
5.3.1Informer機制架構設計145
5.3.2Reflector149
5.3.3DeltaFIFO154
5.3.4Indexer158
5.4WorkQueue162
5.4.1FIFO佇列163
5.4.2延遲佇列165
5.4.3限速佇列166
5.5EventBroadcaster事件管理器170
5.6代碼生成器176
5.6.1client-gen代碼生成器176
5.6.2lister-gen代碼生成器180
5.6.3informer-gen代碼生成器182
5.7其他用戶端185

第6章Etcd存儲核心實現187
6.1Etcd存儲架構設計187
6.2RESTStorage存儲服務通用介面189
6.3RegistryStore存儲服務通用操作190
6.4Storage.Interface通用存儲介面192
6.5CacherStorage緩存層194
6.5.1CacherStorage緩存層設計195
6.5.2ResourceVersion資源版本號199
6.5.3watchCache緩存滑動窗口201
6.6UnderlyingStorage底層存儲物件204
6.7Codec編解碼數據206
6.8Strategy預處理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.1go-restful核心原理215
7.1.2一次HTTP請求的完整生命週期218
7.1.3OpenAPI/Swagger核心原理219
7.1.4HTTPS核心原理222
7.1.5gRPC核心原理224
7.1.6go-to-protobuf代碼生成器225
7.2kube-apiserver命令列參數詳解231
7.3kube-apiserver架構設計詳解243
7.4kube-apiserver啟動流程244
7.4.1資源註冊245
7.4.2Cobra命令列參數解析248
7.4.3創建APIServer通用配置249
7.4.4創建APIExtensionsServer257
7.4.5創建KubeAPIServer261
7.4.6創建AggregatorServer266
7.4.7創建GenericAPIServer269
7.4.8啟動HTTP服務270
7.4.9啟動HTTPS服務272
7.5許可權控制272
7.6認證273
7.6.1BasicAuth認證276
7.6.2ClientCA認證277
7.6.3TokenAuth認證278
7.6.4BootstrapToken認證279
7.6.5RequestHeader認證281
7.6.6WebhookTokenAuth認證282
7.6.7Anonymous認證284
7.6.8OIDC認證285
7.6.9ServiceAccountAuth認證288
7.7授權291
7.7.1AlwaysAllow授權295
7.7.2AlwaysDeny授權296
7.7.3ABAC授權297
7.7.4Webhook授權298
7.7.5RBAC授權300
7.7.6Node授權309
7.8准入控制器310
7.8.1AlwaysPullImages准入控制器315
7.8.2PodNodeSelector准入控制器316
7.9進程信號處理機制318
7.9.1常駐進程實現318
7.9.2進程的優雅關閉319
7.9.3向systemd報告進程狀態320

第8章kube-scheduler核心實現321
8.1kube-scheduler命令列參數詳解321
8.2kube-scheduler架構設計詳解324
8.3kube-scheduler元件的啟動流程326
8.3.1內置調度演算法的註冊327
8.3.2Cobra命令列參數解析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.1NodeAffinity336
8.5.2PodAffinity337
8.5.3PodAntiAffinity338
8.6內置調度演算法339
8.6.1預選調度演算法339
8.6.2優選調度演算法340
8.7調度器核心實現342
8.7.1調度器運行流程342
8.7.2調度過程343
8.7.3Preempt搶佔機制351
8.7.4bind綁定機制356
8.8領導者選舉機制357
8.8.1資源鎖358
8.8.2領導者選舉過程360

網路書店 類別 折扣 價格
  1. 新書
    87
    $465