目錄
推薦序1
推薦序2
前言
第一篇 入 門
第1章 了解Kubernetes 2
1.1 初識Kubernetes 2
1.2 Kubernetes集群的部署 3
1.2.1 Docker的安裝 4
1.2.2 Kind工具介紹 6
1.2.3 使用Kind快速搭建Kubernetes環(huán)境 6
1.2.4 使用Kind搭建多節(jié)點Kubernetes集群環(huán)境 7
1.2.5 Kind用法進階 10
1.3 Kubernetes集群的基本操作 12
1.3.1 示例項目介紹 12
1.3.2 基礎操作演示 13
1.3.3 小結 18
1.4 Kubernetes的核心概念 18
1.4.1 節(jié)點 18
1.4.2 命名空間 19
1.4.3 容器組 21
1.4.4 副本集 22
1.4.5 部署 23
1.4.6 服務 24
1.5 Kubernetes的發(fā)展歷史 26
1.6 本章小結 27
第2章 開始Operator開發(fā) 28
2.1 理解控制器模式 28
2.1.1 生活中的控制器 28
2.1.2 Kubernetes中的控制器 29
2.2 理解Operator模式 30
2.3 Operator開發(fā)環(huán)境準備 31
2.4 Kubebuilder的安裝配置 31
2.5 從Application Operator Demo開始 32
2.5.1 創(chuàng)建項目 33
2.5.2 添加API 35
2.5.3 CRD實現(xiàn) 38
2.5.4 CRD部署 39
2.5.5 CR部署 40
2.5.6 Controller實現(xiàn) 41
2.5.7 啟動Controller 42
2.5.8 部署Controller 44
2.5.9 資源清理 46
2.6 Operator的發(fā)展歷史 46
2.6.1 Operator概念的提出 46
2.6.2 第一個Operator程序 47
2.6.3 Operator的崛起 47
2.7 本章小結 48
第二篇 進 階
第3章 Kubernetes API介紹 50
3.1 認識Kubernetes API 50
3.2 使用Kubernetes API 50
3.2.1 Curl方式訪問API 50
3.2.2 kubectl raw方式訪問API 53
3.3 理解GVK:組、版本與類型 54
3.4 本章小結 54
第4章 理解client-go 55
4.1 client-go項目介紹 55
4.1.1 client-go的代碼庫 55
4.1.2 client-go的包結構 56
4.1.3 client-go的版本規(guī)則 56
4.1.4 獲取client-go 57
4.2 client-go使用示例 57
4.2.1 client-go集群內認證配置 57
4.2.2 client-go集群外認證配置 60
4.2.3 client-go操作Deployment 63
4.3 本章小結 67
第5章 client-go源碼分析 68
5.1 client-go源碼概覽 68
5.1.1 關于client-go源碼版本 68
5.1.2 client-go模塊概覽 69
5.2 WorkQueue源碼分析 71
5.2.1 普通隊列Queue的實現(xiàn) 71
5.2.2 延時隊列DelayingQueue的實現(xiàn) 74
5.2.3 限速隊列RateLimitingQueue的實現(xiàn) 79
5.2.4 小結 82
5.3 DeltaFIFO源碼分析 83
5.3.1 Queue接口與DeltaFIFO的實現(xiàn) 83
5.3.2 queueActionLocked()方法的邏輯 85
5.3.3 Pop()方法和Replace()方法的邏輯 86
5.4 Indexer和ThreadSafeStore 89
5.4.1 Indexer接口和cache的實現(xiàn) 89
5.4.2 ThreadSafeStore的實現(xiàn) 91
5.4.3 各種Index方法的實現(xiàn) 94
5.5 ListerWatcher 95
5.5.1 ListWatch對象的初始化 95
5.5.2 ListerWatcher接口 97
5.5.3 List-Watch與HTTP chunked 98
5.6 Reflector 102
5.6.1 Reflector的啟動過程 102
5.6.2 核心方法:Reflector.ListAndWatch() 102
5.6.3 核心方法:Reflector.watchHandler() 106
5.6.4 Reflector的初始化 108
5.6.5 小結 108
5.7 Informer 109
5.7.1 Informer就是Controller 109
5.7.2 SharedIndexInformer對象 113
5.7.3 sharedProcessor對象 116
5.7.4 關于SharedInformerFactory 119
5.7.5 小結 121
5.8 本章小結 122
第6章 項目核心依賴包分析 123
6.1 API項目 123
6.2 apimachinery項目 124
6.3 controller-runtime項目 125
6.4 本章小結 126
第7章 Operator開發(fā)進階 127
7.1 進階項目設計 127
7.2 準備application-operator項目 127
7.2.1 創(chuàng)建新項目 127
7.2.2 項目基礎結構分析 128
7.3 定義Application資源 132
7.3.1 添加新API 132
7.3.2 自定義新API 133
7.4 實現(xiàn)Application Controller 134
7.4.1 實現(xiàn)主調諧流程 134
7.4.2 實現(xiàn)Deployment調諧流程 137
7.4.3 實現(xiàn)Service調諧流程 140
7.4.4 設置RBAC權限 142
7.4.5 過濾調諧事件 146
7.4.6 資源別名 150
7.5 使用Webhook 151
7.5.1 Kubernetes API訪問控制 151
7.5.2 Admission Webhook介紹 152
7.5.3 Admission Webhook的實現(xiàn) 152
7.5.4 cert-manager部署 154
7.5.5 Webhook部署運行 155
7.5.6 Webhook測試 157
7.6 API多版本支持 159
7.6.1 實現(xiàn)V2版本API 159
7.6.2 多版本API部署