內容簡介
Kubernetes是由谷歌開源的Docker容器集群管理系統,為容器化的套用提供了資源調度、部署運行、服務發現、擴容、縮容等一整套功能。《Kubernetes權威指南——從Docker到Kubernetes實踐全接觸》從一個開發者的角度去理解、分析和解決問題,囊括了Kubernetes入門、核心原理、實戰開發、運維、高級案例及源碼分析等方面的內容,圖文並茂、內容豐富、由淺入深、講解全面;並圍繞著生產環境中可能出現的問題,給出了大量的典型案例,比如安全問題、網路方案的選擇、高可用性方案及Trouble Shooting技巧等,有很好的可借鑑性。
無論對於軟體工程師、測試工程師、運維工程師、軟體架構師、技術經理還是資深IT人士來說,《Kubernetes權威指南——從Docker到Kubernetes實踐全接觸》都極具參考價值。
目錄
第1章Kubernetes入門 1
1.1 Kubernetes是什麼 1
1.2 為什麼要用Kubernetes 4
1.3 從一個不簡單的Hello World例子說起 5
1.3.1 創建redis-master Pod和服務 7
1.3.2 創建redis-slave Pod和服務 10
1.3.3 創建frontend Pod和服務 12
1.3.4 通過瀏覽器訪問網頁 15
1.4 Kubernetes基本概念和術語 16
1.4.1 Node(節點) 16
1.4.2 Pod 18
1.4.3 Label(標籤) 20
1.4.4 Replication Controller(RC) 24
1.4.5 Service(服務) 26
1.4.6 Volume(存儲卷) 30
1.4.7 Namespace(命名空間) 34
1.4.8 Annotation(註解) 35
1.4.9 小結 36
1.5 Kubernetes總體架構 36
1.6 Kubernetes安裝與配置 38
1.6.1 安裝Kubernetes 38
1.6.2 配置和啟動Kubernetes服務 39
1.6.3 Kubernetes的版本升級 46
1.6.4 區域網路中的Kubernetes相關配置 46
1.6.5 Kubernetes對Docker鏡像的要求——啟動命令前台執行 48
第2章Kubernetes核心原理 49
2.1 Kubernetes API Server 分析 49
2.1.1 如何訪問Kubernetes API 49
2.1.2 通過API Server 訪問Node、Pod和Service 52
2.1.3 集群功能模組之間的通信 55
2.2 調度控制原理 56
2.2.1 Replication Controller 57
2.2.2 Node Controller 60
2.2.3 ResourceQuota Controller 62
2.2.4 Namespace Controller 64
2.2.5 ServiceAccount Controller與Token Controller 64
2.2.6 Service Controller與Endpoint Controller 65
2.2.7 Kubernetes Scheduler 71
2.3 Kubelet運行機制分析 75
2.3.1 節點管理 75
2.3.2 Pod管理 76
2.3.3 容器健康檢查 77
2.3.4 cAdvisor資源監控 78
2.4 安全機制的原理 80
2.4.1 Authentication認證 80
2.4.2 Authorization授權 83
2.4.3 Admission Control準入控制 84
2.4.4 Secret私密憑據 88
2.4.5 Service Account 92
2.5 網路原理 95
2.5.1 Kubernetes網路模型 95
2.5.2 Docker的網路基礎 97
2.5.3 Docker的網路實現 109
2.5.4 Kubernetes的網路實現 117
2.5.5 開源的網路組件 127
2.5.6 Kubernetes網路試驗 131
第3章Kubernetes開發指南 145
3.1 REST簡述 145
3.2 Kubernetes API詳解 147
3.2.1 Kubernetes API概述 147
3.2.2 API版本 152
3.2.3 API詳細說明 152
3.2.4 API回響說明 154
3.3 使用Java程式訪問Kubernetes API 156
3.3.1 Jersey 156
3.3.2 Fabric8 168
3.3.3 使用說明 169
第4章Kubernetes運維指南 191
4.1 Kubernetes核心服務配置詳解 191
4.1.1 基礎公共配置參數 191
4.1.2 kube-apiserver 192
4.1.3 kube-controller-manager 195
4.1.4 kube-scheduler 196
4.1.5 Kubelet 197
4.1.6 kube-proxy 199
4.2 關鍵對象定義檔案詳解 200
4.2.1 Pod定義檔案詳解 200
4.2.2 RC定義檔案詳解 203
4.2.3 Service定義檔案詳解 204
4.3 常用運維技巧集錦 206
4.3.1 Node的隔離和恢復 206
4.3.2 Node的擴容 207
4.3.3 Pod動態擴容和縮放 208
4.3.4 更新資源對象的Label 208
4.3.5 將Pod調度到指定的Node 209
4.3.6 套用的滾動升級 210
4.3.7 Kubernetes集群高可用方案 213
4.4 資源配額管理 217
4.4.1 指定容器配額 217
4.4.2 全局默認配額 218
4.4.3 多租戶配額管理 221
4.5 Kubernetes網路配置方案詳解 223
4.5.1 直接路由方案 224
4.5.2 使用flannel疊加網路 226
4.5.3 使用Open vSwitch 228
4.6 Kubernetes集群監控 232
4.6.1 使用kube-ui查看集群運行狀態 232
4.6.2 使用cAdvisor查看容器運行狀態 236
4.7 Trouble Shooting指導 241
4.7.1 對象的Event事件 242
4.7.2 容器日誌 243
4.7.3 Kubernetes系統日誌 244
4.7.4 常見問題 246
4.7.5 尋求幫助 249
第5章Kubernetes高級案例進階 250
5.1 Kubernetes DNS服務配置案例 250
5.1.1 skydns配置檔案 251
5.1.2 修改每個Node上的Kubelet啟動參數 254
5.1.3 創建skydns Pod和服務 254
5.1.4 通過DNS查找Service 255
5.1.5 DNS服務的工作原理解析 256
5.2 Kubernetes集群性能監控案例 257
5.2.1 配置Kubernetes集群的ServiceAccount和Secret 258
5.2.2 部署Heapster、InfluxDB、Grafana 261
5.2.3 查詢InfluxDB資料庫中的數據 265
5.2.4 Grafana頁面查看和操作 268
5.3 Cassandra集群部署案例 269
5.3.1 自定義SeedProvider 270
5.3.2 通過Service動態查找Pod 271
5.3.3 Cassandra集群新節點的自動添加 274
5.4 集群安全配置案例 275
5.4.1 雙向認證配置 275
5.4.2 簡單認證配置 279
5.5 不同工作組共享Kubernetes集群的案例 280
5.5.1 創建namespace 281
5.5.2 定義Context(運行環境) 281
5.5.3 設定工作組在特定Context環境中工作 282
第6章Kubernetes源碼導讀 285
6.1 Kubernetes源碼結構和編譯步驟 285
6.2 kube-apiserver進程源碼分析 289
6.2.1 進程啟動過程 289
6.2.2 關鍵代碼分析 291
6.2.3 設計總結 306
6.3 kube-controller-manager進程源碼分析 310
6.3.1 進程啟動過程 310
6.3.2 關鍵代碼分析 313
6.3.3 設計總結 321
6.4 kube-scheduler進程源碼分析 323
6.4.1 進程啟動過程 323
6.4.2 關鍵代碼分析 328
6.4.3 設計總結 335
6.5 Kubelet進程源碼分析 337
6.5.1 進程啟動過程 337
6.5.2 關鍵代碼分析 342
6.5.3 設計總結 365
6.6 kube-proxy進程源碼分析 366
6.6.1 進程啟動過程 367
6.6.2 關鍵代碼分析 368
6.6.3 設計總結 383
6.7 Kubectl進程源碼分析 384
6.7.1 kubectl create命令 385
6.7.2 rolling-upate命令 389
後記 396
作者簡介
龔正 / 惠普公司高級顧問
擁有超過10年的IT行業從業經歷,以及豐富的雲計算、大數據分析和大型企業級套用架構設計、實施經驗,是電信、金融、網際網路等領域的資深行業專家。
吳治輝 / 惠普公司系統架構師
擁有超過15年的軟體研發經驗,專注於電信軟體和雲計算方面的軟體研發,擁有豐富的大型項目架構設計經驗,是業界少有的具備很強Coding能力的S級資深架構師,也是《ZeroC Ice權威指南》的作者。
葉伙榮 / 惠普公司資深系統架構師、大數據技術和雲計算專家
擁有15年IT行業開發、設計、系統架構和諮詢工作經驗,曾參與多個CMM I5項目,熟悉各種大數據和雲計算技術,擁有豐富的大數據及雲計算規劃、實施、運維經驗。
張龍春 / 惠普公司雲計算資深架構師
負責過多個大型雲平台的規劃、設計和建設,熟悉雲計算及大數據領域的開源生態系統,專注於大規模集群技術、高性能網路通信、實時資料庫、海量數據挖掘、智慧型學習和推薦、機器人等。
閆健勇 / 惠普公司高級項目經理、總構架師
擁有15年電信行業系統建設經驗,參與了多項電信大型系統的架構設計和管理,對於雲計算和大數據在電信行業中的套用擁有豐富的經驗。
劉曉紅 / 惠普公司高級諮詢顧問
擁有超過10年的電信行業從業經驗,親歷中國移動BSS/OSS領域核心繫統的建設發展歷程,擁有豐富的諮詢規劃、需求分析、產品設計、項目管理、測試管理經驗,專注於雲計算、大數據等前沿技術的研究。
崔曉寧 / 惠普公司高級顧問
擁有超過7年的測試諮詢和質量管理經驗,對於如何提升雲計算、大數據和分散式運算架構下的業務質量控制,並推動架構最佳化有豐富的經驗。