內容簡介
Kubernetes是由谷歌開源的Docker容器集群管理系統,為容器化的套用提供了資源調度、部署運行、服務發現、擴容及縮容等一整套功能。《Kubernetes指南:從Docker到Kubernetes實踐全接觸(第2版)》從一個開發者的角度去理解、分析和解決問題,囊括了Kubernetes入門、核心原理、實踐指南、開發指導、高級案例、運維指南及源碼分析等方面的內容,圖文並茂、內容豐富、由淺入深、講解全面;並圍繞著生產環境中可能出現的問題,給出了大量的典型案例,比如安全問題、網路方案的選擇、高可用性方案及Trouble Shooting技巧等,有很強的可借鑑性。
無論是對於軟體工程師、測試工程師、運維工程師、軟體架構師、技術經理,還是對於資深IT人士來說,本書都極具參考價值。
圖書目錄
第1章 Kubernetes 入門 1
1.1 Kubernetes 是什麼 1
1.2 為什麼要用Kubernetes 4
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 Master 12
1.4.2 Node 13
1.4.3 Pod 15
1.4.4 Label(標籤) 19
1.4.5 Replication Controller(RC) 22
1.4.6 Deployment 25
1.4.7 Horizontal Pod Autoscaler(HPA) 27
1.4.8 Service(服務) 29
1.4.9 Volume(存儲卷) 35
1.4.10 Persistent Volume 39
1.4.11 Namespace(命名空間) 40
1.4.12 Annotation(註解) 42
1.4.13 小結 42
第2章 Kubernetes 實踐指南 43
2.1 Kubernetes 安裝與配置 43
2.1.1 安裝Kubernetes 43
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 World 87
2.3.1 創建redis-master RC 和Service 89
2.3.2 創建redis-slave RC 和Service 91
2.3.3 創建frontend RC 和Service 93
2.3.4 通過瀏覽器訪問frontend 頁面 96
2.4 深入掌握Pod 97
2.4.1 Pod 定義詳解 97
2.4.2 Pod 的基本用法 102
2.4.3 靜態Pod 107
2.4.4 Pod 容器共享Volume 108
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 深入掌握Service 143
2.5.1 Service 定義詳解 143
2.5.2 Service 基本用法 145
2.5.3 集群外部訪問Pod 或Service 150
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 Controller 171
3.2.2 Node Controller 173
3.2.3 ResourceQuota Controller 174
3.2.4 Namespace Controller 176
3.2.5 Service Controller 與Endpoint Controller 176
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 Account 195
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 API 258
4.3.1 Jersey 258
4.3.2 Fabric8 270
4.3.3 使用說明 271
第5章 Kubernetes 運維指南 292
5.1 Kubernetes 集群管理指南 292
5.1.1 Node 的管理 292
5.1.2 更新資源對象的Label 294
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
作者簡介
龔正 / 惠普公司高級顧問
擁有十多年的IT從業經驗,具備豐富的雲計算、大數據分析和大型企業級套用的架構設計和實施經驗,是電信、金融、網際網路等領域的資深專家。
吳治輝 / 惠普公司資深架構師
擁有超過15年的軟體研發經驗,專注於電信軟體和雲計算方面的軟體研發,擁有豐富的大型項目架構設計經驗,是業界少有的具備很強Coding能力的S級資深架構師,也是《ZeroC Ice指南》的作者。
王偉 / 惠普公司資深系統架構師、大數據和雲計算技術專家
擁有多年IT行業從業經驗,參與過多個大型套用的架構設計、系統開發和實施落地,精通大數據、雲計算及大型系統架構和開發的相關技術,對網際網路和電信行業的熱點技術有著深刻的理解,是雲計算和大數據方面的技術專家。
崔秀龍 / 惠普公司資深架構師
開源軟體、自動化愛好者,擁有十多年從業經驗,對軟體生命周期的各個環節均有深刻的理解。
閆健勇 / 惠普公司高級項目經理、總構架師
擁有超過15年的電信行業系統建設經驗,主導了多項電信大型系統的架構設計和管理,對於雲計算和大數據在電信行業中的套用擁有豐富的經驗。
崔曉寧 / 惠普公司高級顧問
擁有超過7年的測試諮詢和質量管理經驗,在雲計算、大數據和分散式運算架構下的業務質量控制方面有非常豐富的項目實踐和心得,並對推動組織架構最佳化有豐富的經驗。幫助多個超過百人的大型項目建立軟體產品管理規範和體系,並對其運營提供指導。
劉曉紅 / 惠普公司高級諮詢顧問
擁有超過10年的電信行業從業經驗,親歷中國移動BSS/OSS領域核心繫統的建設發展歷程,具備豐富的諮詢規劃、需求分析、產品設計、項目管理、測試管理經驗,專注於雲計算、大數據等前沿技術的研究。