內容提要
本書是容器圈Kubernetes重磅開山作《Kubernetes權威指南:從Docker到Kubernetes實踐全接觸》的升級版,書籍更新到20166 kubernetes v13版本,包含從20157發布10版本之後v11、v12、v13版本的全部新特性,並根據第1版的讀者反饋和全新的Kubernetes版本,對內容進行了大幅修訂,閱讀體驗更佳。
我相信這是一本到目前為止對從事雲計算領域技術實踐的人來說非常有價值的書籍。Kubernetes是容器生態圈中的重要一員,發展速度極快,現已擁有800多名代碼貢獻者。本書囊括了Kubernetes入門、核心原理、實踐指南、開發指導、高級案例、運維指南及源碼分析等方面的內容,由淺入深地介紹了Kubernetes容器雲平台,並圍繞著生產環境中可能出現的問題,給出了大量的典型案例,有很好的可借鑑性。
本書作者全部來自惠普公司雲計算實戰一線,敏銳地捕獲和探索著各種IT前瞻技術,有著全面而紮實的技術架構體系、對創新技術天生的熱情、國際技術領先者的視野,還有著對企業級IT架構的深入把握。
目錄
第1章Kubernetes 入門 1
1.1 Kubernetes 是什麼 1
1.2 為什麼要用Kubernetes4
1.3 從一個簡單的例子開始 5
1.3.1 環境準備 6
1.3.2 啟動MySQL 服務 7
1.3.3 啟動Tomcat 套用 9
1.3.4 通過瀏覽器訪問網頁 11
1.4 Kubernetes 基本概念和術語 12
1.4.1 Master12
1.4.2 Node13
1.4.3 Pod15
1.4.4 Label(標籤) 19
1.4.5 Replication Controller(RC) 22
1.4.6 Deployment25
1.4.7 Horizontal Pod Autoscaler(HPA) 27
1.4.8 Service(服務) 29
1.4.9 Volume(存儲卷) 35
1.4.10 Persistent Volume39
1.4.11 Namespace(命名空間) 40
1.4.12 Annotation(註解) 42
1.4.13 小結 42
第2章Kubernetes 實踐指南 43
2.1 Kubernetes 安裝與配置 43
2.1.1 安裝Kubernetes43
2.1.2 配置和啟動Kubernetes 服務 45
2.1.3 Kubernetes 集群的安全設定 51
2.1.4 Kubernetes 的版本升級 57
2.1.5 區域網路中的Kubernetes 相關配置 57
2.1.6 Kubernetes 核心服務配置詳解 58
2.1.7 Kubernetes 集群網路配置方案 72
2.2 kubectl 命令行工具用法詳解 80
2.2.1 kubectl 用法概述 80
2.2.2 kubectl 子命令詳解 82
2.2.3 kubectl 參數列表 84
2.2.4 kubectl 輸出格式 84
2.2.5 kubectl 操作示例 86
2.3 Guestbook 示例:Hello World87
2.3.1 創建redis-master RC 和Service89
2.3.2 創建redis-slave RC 和Service91
2.3.3 創建frontend RC 和Service93
2.3.4 通過瀏覽器訪問frontend 頁面 96
2.4 深入掌握Pod97
2.4.1 Pod 定義詳解 97
2.4.2 Pod 的基本用法 102
2.4.3 靜態Pod107
2.4.4 Pod 容器共享Volume108
2.4.5 Pod 的配置管理 110
2.4.6 Pod 生命周期和重啟策略 123
2.4.7 Pod 健康檢查 124
2.4.8 玩轉Pod 調度 126
2.4.9 Pod 的擴容和縮容 135
2.4.10 Pod 的滾動升級 139
2.5 深入掌握Service143
2.5.1 Service 定義詳解 143
2.5.2 Service 基本用法 145
2.5.3 集群外部訪問Pod 或Service150
2.5.4 DNS 服務搭建指南 153
2.5.5 Ingress:HTTP 7 層路由機制 161
第3章Kubernetes 核心原理 165
3.1 Kubernetes API Server 原理分析 165
3.1.1 Kubernetes API Server 概述 165
3.1.2 獨特的Kubernetes Proxy API 接口 168
3.1.3 集群功能模組之間的通信 169
3.2 Controller Manager 原理分析 170
3.2.1 Replication Controller171
3.2.2 Node Controller173
3.2.3 ResourceQuota Controller174
3.2.4 Namespace Controller176
3.2.5 Service Controller 與Endpoint Controller176
3.3 Scheduler 原理分析 177
3.4 kubelet 運行機制分析 181
3.4.1 節點管理 181
3.4.2 Pod 管理 182
3.4.3 容器健康檢查 183
3.4.4 cAdvisor 資源監控 184
3.5 kube-proxy 運行機制分析 186
3.6 深入分析集群安全機制 190
3.6.1 API Server 認證 190
3.6.2 API Server 授權 192
3.6.3 Admission Control 準入控制 194
3.6.4 Service Account195
3.6.5 Secret 私密憑據 200
3.7 網路原理 203
3.7.1 Kubernetes 網路模型 203
3.7.2 Docker 的網路基礎 205
3.7.3 Docker 的網路實現 217
3.7.4 Kubernetes 的網路實現 225
3.7.5 開源的網路組件 229
3.7.6 網路實戰 234
第4章Kubernetes 開發指南 247
4.1 REST 簡述 247
4.2 Kubernetes API 詳解 249
4.2.1 Kubernetes API 概述 249
4.2.2 API 版本 254
4.2.3 API 詳細說明 254
4.2.4 API 回響說明 256
4.3 使用Java 程式訪問Kubernetes API258
4.3.1 Jersey258
4.3.2 Fabric8270
4.3.3 使用說明 271
第5章Kubernetes 運維指南 292
5.1 Kubernetes 集群管理指南 292
5.1.1 Node 的管理 292
5.1.2 更新資源對象的Label294
5.1.3 Namespace:集群環境共享與隔離 295
5.1.4 Kubernetes 資源管理 299
5.1.5 Kubernetes 集群高可用部署方案 333
5.1.6 Kubernetes 集群監控 343
5.1.7 kubelet 的垃圾回收(GC)機制 361
5.2 Kubernetes 高級案例 362
5.2.1 ElasticSearch 日誌蒐集查詢和展現案例 362
5.2.2 Cassandra 集群部署案例 371
5.3 Trouble Shooting 指導 376
5.3.1 查看系統Event 事件 377
5.3.2 查看容器日誌 379
5.3.3 查看Kubernetes 服務日誌 379
5.3.4 常見問題 381
5.3.5 尋求幫助 384
5.4 Kubernetes v1.3 開發中的新功能 385
5.4.1 Pet Set(有狀態的容器) 385
5.4.2 Init Container(初始化容器) 388
5.4.3 Cluster Federation(集群聯邦) 391
第6章Kubernetes 源碼導讀 396
6.1 Kubernetes 源碼結構和編譯步驟 396
6.2 kube-apiserver 進程源碼分析 400
6.2.1 進程啟動過程 400
6.2.2 關鍵代碼分析 402
6.2.3 設計總結 417
6.3 kube-controller-manager 進程源碼分析 420
6.3.1 進程啟動過程 420
6.3.2 關鍵代碼分析 423
6.3.3 設計總結 431
6.4 kube-scheduler 進程源碼分析 433
6.4.1 進程啟動過程 434
6.4.2 關鍵代碼分析 438
6.4.3 設計總結 445
6.5 kubelet 進程源碼分析 447
6.5.1 進程啟動過程 447
6.5.2 關鍵代碼分析 452
6.5.3 設計總結 475
6.6 kube-proxy 進程源碼分析 476
6.6.1 進程啟動過程 476
6.6.2 關鍵代碼分析 478
6.6.3 設計總結 493
6.7 kubectl 進程源碼分析 494
6.7.1 kubectl create 命令 495
6.7.2 rolling-update 命令 499
後記 505