本書通過容器技術領域的實踐者分享各自的實踐案例,介紹常見的業務痛點、實現方式、方案的選型、遇到的問題和解決方案等,希望能夠幫助讀者了解、認識和玩轉容器。本書主要分為兩部分:第一部分是原理篇,包括第1章和第2章,簡單介紹Docker和Kubernetes的基礎知識及原理,包括Docker和Kubernetes是什么、可以做什么及如何使用等;第二部分是案例篇,包括第3~10章,通過多個實戰案例,針對不同的使用場景和業務需求,介紹如何應用容器技術及實現相關需求。本書案例均來自一線真實案例,并有技術人員對技術改造過程的體會和領悟,有較強的借鑒意義和參考價值。
任職杭州網銀互聯科技股份有限公司市場部,負責公司的市場推廣活動,包括線下活動的策劃、對接和執行。杭州網銀互聯成立于2004年,主營數據中心業務和云計算業務,公司擁有十多年的行業經驗以及近百人的技術團隊。
目 錄
第1章 Docker入門 1
1.1 容器簡介與Docker容器引擎 2
1.1.1 什么是容器 2
1.1.2 Docker容器 2
1.2 Docker核心原理 5
1.2.1 Docker引擎結構 5
1.2.2 Docker服務流程 6
1.2.3 Docker核心技術 6
1.3 Docker鏡像及鏡像倉庫 16
1.3.1 什么是Docker鏡像 16
1.3.2 構建Docker鏡像 16
1.3.3 搭建Docker鏡像倉庫 21
1.4 Docker網絡 22
1.4.1 Docker網絡架構 22
1.4.2 Docker網絡原理 23
第2章 Kubernetes入門 28
2.1 Kubernetes概述 29
2.1.1 什么是Kubernetes 29
2.1.2 為什么選擇Kubernetes 29
2.1.3 Kubernetes基本概念 31
2.2 Kubernetes架構及安裝 36
2.2.1 Kubernetes架構 36
2.2.2 Kubernetes核心組件 38
2.2.3 二進制安裝Kubernetes集群 44
2.2.4 kubespray安裝Kubernetes集群 50
2.3 Kubernetes實戰案例 52
2.3.1 WordPress應用模型 52
2.3.2 部署WordPress 53
2.3.3 部署MariaDB 54
2.3.4 通過瀏覽器訪問WordPress 57
2.4 Kubernetes網絡 57
2.4.1 Kubernetes中的網絡場景 57
2.4.2 Kubernetes網絡模型 59
2.4.3 Kubernetes開源網絡方案 60
2.5 Kubernetes高級特性 64
2.5.1 Federation 65
2.5.2 GPU支持 68
2.6 Kubernetes生態 71
2.6.1 Kubernetes包管理工具Helm 71
2.6.2 Service Mesh 73
2.6.3 Serverless 76
第3章 美麗聯合容器云實踐 79
3.1 “從零到一”:容器云平臺的技術演進 80
3.1.1 為什么要建設容器云平臺 80
3.1.2 如何建設容器云平臺 80
3.1.3 架構演進 84
3.1.4 穩定性、效率和成本 89
3.2 “自我突破”:關鍵技術方案和創新點 93
3.2.1 版本演進 93
3.2.2 關鍵技術和創新點 94
3.3 總結 109
3.3.1 體會和心得 109
3.3.2 展望未來 110
3.3.3 遇到過的問題 114
3.3.4 開源工具分享 115
第4章 酷家樂容器化之路 119
4.1 架構挑戰與應對方案 120
4.2 應用容器化 122
4.2.1 CI/CD遷移 122
4.2.2 公共基礎鏡像 122
4.2.3 鏡像構建及單元測試 123
4.2.4 容器部署 124
4.2.5 網絡模式 124
4.2.6 性能相關 124
4.2.7 小結 125
4.3 編排自動化 125
4.3.1 資源隔離與資源限額 125
4.3.2 Kubernetes的認證與授權 128
4.3.3 CMDB改造 131
4.3.4 Kubernetes的包管理工具Helm 132
4.3.5 存儲方案 132
4.3.6 網絡方案 132
4.3.7 日志與監控 133
4.3.8 小結 134
4.4 酷家樂的服務網格實踐 134
4.4.1 服務網格的發展現狀 135
4.4.2 酷家樂技術團隊應用Istio的范圍 135
4.4.3 Istio的安裝 135
4.4.4 通過Istio的信息進行全自動化部署 135
4.4.5 通過Istio + Zipkin + Sleuth實現調用鏈路追蹤 137
4.4.6 通過Istio的routing rule實現不同的發布策略和版本策略 138
4.4.7 通過修改Istio系統設置實現Pod外部訪問控制 139
4.4.8 Istio的其他風險 140
4.4.9 小結 140
4.5 總結 140
第5章 個推基于Docker和Kubernetes的微服務實踐 142
5.1 微服務 143
5.1.1 微服務簡介 143
5.1.2 微服務實踐 145
5.2 容器化 149
5.3 Kubernetes實踐 151
5.4 總結 157
第6章 使用Kubernetes進行交換機端口流量采集 158
6.1 Prometheus簡介與使用 159
6.1.1 Prometheus特點 159
6.1.2 Prometheus相關組件 159
6.1.3 Prometheus架構 159
6.1.4 Prometheus適用場景 160
6.1.5 Prometheus的安裝及使用 160
6.1.6 Prometheus SNMP Exporter 168
6.1.7 Prometheus 告警 169
6.1.8 Grafana 171
6.2 流量采集系統 171
第7章 搜道微服務容器化實踐 175
7.1 為何選擇Docker 176
7.1.1 公司架構演變過程 176
7.1.2 平臺存在的問題 176
7.1.3 容器優勢 176
7.2 Docker容器云架構方案 177
7.2.1 技術選型及實踐 177
7.2.2 服務注冊與服務發現 192
7.2.3 Docker網絡與通信解決方案 193
7.3 未來展望:自動化和彈性云 194
7.3.1 自動化 195
7.3.2 彈性云 195
第8章 縱橫新創的容器化實踐 196
8.1 背景介紹 197
8.2 Rancher介紹 198
8.2.1 基礎設施編排 199
8.2.2 應用商店 199
8.2.3 容器編排與調度 199
8.2.4 企業級權限管理 199
8.3 Docker構件庫配置 199
8.3.1 Nexus 3安裝 200
8.3.2 Nexus 3配置Docker鏡像庫 201
8.3.3 配置Docker環境 202
8.4 構建Maven環境 208
8.4.1 配置POM文件 208
8.4.2 配置DockerFile文件 209
8.4.3 開啟Docker的遠程接口 209
8.4.4 執行Maven編譯 210
8.5 Rancher在Jenkins中的配置 211
8.5.1 Jenkins中安裝Rancher插件 212
8.5.2 在Rancher服務中配置API連接信息 212
8.5.3 在Jenkins中配置 213
8.5.4 Jenkins的執行效果 214
8.6 問題與總結 216
8.6.1 Rancher的高可用 216
8.6.2 收集日志 216
8.6.3 監控告警 217
8.6.4 調用鏈監控 217
8.7 寫在最后 218
第9章 九言科技Kubernetes實踐 219
9.1 現有維護中的瓶頸 220
9.2 容器管理平臺的選擇 220
9.3 環境的搭建與CI/CD 220
9.3.1 用kubeadm快速搭建Kubernetes環境 221
9.3.2 Kubernetes環境下的CI/CD整體架構 222
9.4 存儲引擎的選擇 222
9.4.1 存儲概述 222
9.4.2 如何選擇驅動引擎 223
9.5 Kubernetes日志收集 226
9.5.1 收集日志的需求 226
9.5.2 收集日志的解決方案 226
9.6 未來探索 229
9.6.1 Service Mesh介紹 229
9.6.2 FaaS與Serverless 230
9.7 小結 232
第10章 沃趣科技的容器化RDS之路 233
10.1 容器化RDS:計算存儲分離架構下的“Split-Brain” 234
10.2 容器化RDS:計算存儲分離架構下的I/O優化 242
10.2.1 計算存儲分離架構 243
10.2.2 計算存儲分離架構的缺點 243
10.2.3 DoubleWrite 243
10.2.4 單機架構:關閉DoubleWrite 244
10.2.5 計算存儲分離架構:關閉DoubleWrite 244
10.3 容器化RDS:PersistentLocalVolumes和VolumeScheduling 246
10.3.1 本地卷 246
10.3.2 原有調度機制的問題 246
10.3.3 PVC綁定 247
10.3.4 Pod調度 247
10.4 容器化RDS:借助CSI擴展Kubernetes存儲能力 252
10.4.1 現有Kubernetes存儲插件系統問題 253
10.4.2 Container Storage Interface 254
10.4.3 基于CSI和分布式文件系統在MySQL上實現Dynamically Expand Volume 255
10.4.4 對CSI的展望 257