KUBERNETES即學即用(第三版) 版權信息
- ISBN:9787519891787
- 條形碼:9787519891787 ; 978-7-5198-9178-7
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
KUBERNETES即學即用(第三版) 本書特色
Kubernetes從根本上改變了開發人員和運維人員在云中構建、部署以及維護應用程序的方式。無論你是分布式系統的新手,還是多年來一直在部署云原生應用程序的老手,這款流行的容器編排器都可以幫助你在速度、敏捷性、可靠性以及效率等方面更上一層樓。
本書講解了如何將Kubernetes融入分布式應用程序的生命周期。無論你是軟件開發人員、工程師還是架構師,無論你的系統是在線服務、機器學習應用程序,還是樹莓派計算機集群,都可以通過本書學習如何使用各種工具以及API來實現可擴展分布式系統的自動化。
“本書由四位*權威的云原生系統專家撰寫而成,為學習Kubernetes概念打下堅實的基礎,書中提供了大量示例可以幫助讀者自行探索Kubernetes。”
——Liz Rice,Isovalent
KUBERNETES即學即用(第三版) 內容簡介
本書的主要內容包括:創建一個簡單的集群,了解Kubernetes的基本工作原理。深入了解使用Kubernetes部署應用程序的細節。學習Kubernetes的專屬對象,如守護進程集、作業、ConfigMap以及機密等。探索如何通過部署組織應用程序的整個生命周期。學習如何保護應用程序部署的安全。學習部署多集群應用程序,以及通過編程語言訪問Kubernetes。
KUBERNETES即學即用(第三版) 目錄
目錄
前言 1
第1 章 概述 9
1.1 速度 .10
1.1.1 不可變性的價值 11
1.1.2 聲明式配置 12
1.1.3 自我修復系統 13
1.2 擴展服務和團隊 14
1.2.1 解耦 15
1.2.2 輕松擴展應用程序和集群 15
1.2.3 通過微服務擴展開發團隊 16
1.2.4 統一性與擴展的關注點分離 .17
1.3 基礎設施的抽象 19
1.4 效率 .20
1.5 云原生生態系統 21
1.6 小結 .22
第2 章 創建和運行容器 .23
2.1 容器鏡像25
2.2 使用Docker 構建應用程序鏡像 27
2.2.1 Dockerfiles .27
2.2.2 優化鏡像的大小 29
2.2.3 鏡像安全 .31
2.3 多階段鏡像構建 31
2.4 將鏡像存儲到遠程倉庫 .34
2.5 容器運行時接口 35
2.5.1 通過Docker 運行容器 35
2.5.2 探索kuard 應用程序 .36
2.5.3 限制資源使用 36
2.6 清理 .37
2.7 小結 .38
第3 章 部署Kubernetes 集群 .39
3.1 在公共云上安裝Kubernetes 40
3.1.1 Google Kubernetes Engine .40
3.1.2 使用Azure Kubernetes 服務安裝Kubernetes 41
3.1.3 在AWS 上安裝Kubernetes 42
3.2 使用minikube 在本地安裝Kubernetes 42
3.3 在Docker 中運行Kubernetes .43
3.4 Kubernetes 客戶端 44
3.4.1 檢查集群狀態 44
3.4.2 列出Kubernetes 的節點 45
3.5 集群組件47
3.5.1 Kubernetes 代理 48
3.5.2 Kubernetes DNS 48
3.5.3 Kubernetes 用戶界面 .49
3.6 小結 .49
第4 章 常用的kubectl 命令 51
4.1 命名空間51
4.2 上下文 51
4.3 查看Kubernetes API 對象 52
4.4 創建、更新和銷毀Kubernetes 對象 53
4.5 對象的標簽與注釋 55
4.6 調試命令55
4.7 集群管理58
4.8 自動補齊命令 .58
4.9 查看集群的其他方法 59
4.10 小結 59
第5 章 Pod .61
5.1 Kubernetes 中的Pod 62
5.2 Pod 的應用思路 .63
5.3 Pod 清單 63
5.3.1 創建Pod 64
5.3.2 創建Pod 清單 65
5.4 運行Pod 66
5.4.1 查詢Pod 列表 66
5.4.2 Pod 的詳細信息 67
5.4.3 刪除Pod 68
5.5 訪問Pod 69
5.5.1 通過日志獲取更多信息 69
5.5.2 使用exec 在容器中運行命令 70
5.5.3 在容器之間復制文件.70
5.6 健康檢查70
5.6.1 存活探針 .71
5.6.2 就緒探針 .72
5.6.3 啟動探針 .73
5.6.4 高級探針配置 73
5.6.5 其他類型的健康檢查.73
5.7 資源管理73
5.7.1 資源請求:所需的*少資源量 .74
5.7.2 通過約束限制資源使用量 76
5.8 利用卷持久保存數據 77
5.8.1 在Pod 中使用卷 77
5.8.2 Pod 中卷的不同使用方式 78
5.9 綜合討論79
5.10 小結 81
第6 章 標簽與注釋 83
6.1 標簽 .83
6.1.1 應用標簽 .85
6.1.2 修改標簽 .86
6.1.3 標簽選擇器 87
6.1.4 API 對象中的標簽選擇器 89
6.1.5 Kubernetes 架構中的標簽 90
6.2 注釋 .90
6.3 清理 .92
6.4 小結 .92
第7 章 服務發現 95
7.1 什么是服務發現 95
7.2 服務對象96
7.2.1 DNS 服務 97
7.2.2 就緒檢查 .98
7.3 向外公開集群服務 .100
7.4 負載均衡器整合 .102
7.5 高級集成.104
7.5.1 端點 .105
7.5.2 手動發現服務 .106
7.5.3 kube-proxy 與集群IP .107
7.5.4 集群IP 環境變量 .108
7.6 連接到其他環境 .109
7.6.1 連接到集群外部的資源 .109
7.6.2 將外部資源連接到集群內部的服務 110
7.7 清理 110
7.8 小結 110
第8 章 Ingress 的HTTP 負載均衡 . 113
8.1 Ingress 規范與Ingress 控制器 . 114
8.2 安裝Contour 115
8.2.1 配置DNS . 116
8.2.2 配置本地hosts 文件 117
8.3 使用Ingress 117
8.3.1 *簡單的用法 . 118
8.3.2 使用主機名 . 119
8.3.3 使用路徑 121
8.3.4 清理 .122
8.4 Ingress 的高級話題和技巧 .122
8.4.1 運行多個Ingress 控制器 122
8.4.2 多個Ingress 對象 .123
8.4.3 Ingress 與命名空間 .123
8.4.4 改寫路徑 124
8.4.5 提供TLS 124
8.5 其他Ingress 實現 126
8.6 Ingress 的未來 .126
8.7 小結 127
第9 章 副本集 . 129
9.1 協調循環.130
9.2 Pod 與副本集的關系 130
9.2.1 采用現有的容器 131
9.2.2 隔離容器 131
9.3 副本集的設計思想 .132
9.4 副本集的規范 132
9.4.1 Pod 模板 133
9.4.2 標簽 .133
9.5 創建副本集 134
9.6 檢查副本集 134
9.6.1 根據Pod 查找副本集 .135
9.6.2 查找副本集管理的Pod 集合 135
9.7 副本集的伸縮 135
9.7.1 副本集的命令式伸縮:kubectl scale 136
9.7.2 副本集的聲明式伸縮:kubectl apply .136
9.7.3 自動伸縮副本集 137
9.8 刪除副本集 139
9.9 小結 139
第10 章 部署 141
10.1 首次部署 142
10.2 創建部署 144
10.3 管理部署 146
10.4 更新部署 147
10.4.1 擴展部署 148
10.4.2 更新容器鏡像 148
10.4.3 推出的歷史記錄 .150
10.5 部署策略 153
10.5.1 重建策略 153
10.5.2 滾動更新策略 153
10.5.3 放慢部署速度以確保服務健康 157
10.6 刪除部署 158
10.7 監控部署 159
10.8 小結 159
第11 章 守護進程集 161
11.1 守護進程集調度器 162
11.2 創建守護進程集 163
11.3 將守護進程集限制到特定節點 .165
11.3.1 向節點添加標簽 .165
11.3.2 節點選擇器 166
11.4 更新守護進程集 167
11.5 刪除守護進程集 169
11.6 小結 169
第12 章 作業 171
12.1 作業對象 171
12.2 作業模式 172
12.2.1 一次性作業172
12.2.2 并行性 .177
12.2.3 工作隊列 179
12.3 定時作業 184
12.4 小結 185
第13 章 ConfigMap 與機密 187
13.1 ConfigMap 187
13.1.1 創建ConfigMap .188
13.1.2 使用ConfigMap .189
13.2 機密 192
13.2.1 創建機密 193
13.2.2 消費機密 194
13.2.3 私有容器倉庫 195
13.3 命名約束 197
13.4 管理ConfigMap 和機密 197
13.4.1 顯示列表 198
13.4.2 創建 198
13.4.3 更新 199
13.5 小結 201
第14 章 基于角色的訪問控制 203
14.1 基于角色的訪問控制 .204
14.1.1 Kubernetes 中的身份 204
14.1.2 角色和角色綁定 .205
14.1.3 Kubernetes 中的角色和角色綁定 205
14.2 RBAC 的管理技巧 208
14.2.1 使用can-i 測試授權 .208
14.2.2 通過源代碼控制管理RBAC 209
14.3 高級主題 209
14.3.1 聚合集群角色 210
14.3.2 分組綁定 210
14.4 小結 212
第15 章 服務網格 213
15.1 雙向TLS 加密與身份驗證 .214
15.2 流量整形 214
15.3 內省 215
15.4 你真的需要服務網格嗎 216
15.5 服務網格的實現 216
15.6 服務網格的發展前景 .217
15.7 小結 218
第16 章 存儲解決方案與Kubernetes 的集成 . 219
16.1 導入外部服務 220
16.1.1 沒有選擇器的服務 221
16.1.2 外部服務的局限性:健康檢查 223
16.2 運行可靠的單例 224
16.2.1 運行MySQL 單例服務 224
16.2.2 動態卷供應228
16.3 利用狀態集實現Kubernetes 原生存儲 .230
16.3.1 狀態集的屬性 230
16.3.2 利用狀態集手動復制MongoDB.231
16.3.3 自動化MongoDB 集群的創建 234
16.3.4 持久卷與狀態集 .237
16.3.5 *后一步:存活探針 238
16.4 小結 238
第17 章 擴展Kubernetes 239
17.1 擴展Kubernetes 意味著什么 .239
17.2 可擴展點 240
17.3 自定義資源的模式 250
17.3.1 僅有數據 250
17.3.2 編譯器 .250
17.3.3 操作器 .251
17.3.4 如何入門 251
17.4 小結 .251
第18 章 利用常見的編程語言訪問Kubernetes . 253
18.1 Kubernetes API:客戶端的視角 253
18.1.1 OpenAPI 與生成的客戶端庫 254
18.1.2 kubectl 命令 .254
18.2 Kubernetes API 編程 255
18.2.1 安裝客戶端庫 255
18.2.2 Kubernetes API 的身份驗證 .256
18.2.3 訪問Kubernetes API 258
18.2.4 綜合所有步驟:使用Python、Java 或.NET 列出和創建Pod 258
18.2.5 對象的創建與部分更新 260
18.2.6 監控Kubernetes API 的變化 263
18.2.7 與Pod 互動 265
18.3 小結 268
第19 章 Kubernetes 應用程序的安全 269
19.1 安全上下文 .269
19.2 Pod 安全 277
19.2.1 Pod 安全是什么 277
19.2.2 應用Pod 安全標準 278
19.3 服務賬號管理 281
19.4 基于角色的訪問控制 .282
19.5 運行時類 282
19.6 網絡策略 284
19.7 服務網格 288
19.8 安全基準工具 288
19.9 鏡像安全 290
19.10 小結 .290
第20 章 Kubernetes 集群的管理策略 291
20.1 策略的重要性 291
20.2 準入流程 292
20.3 Gatekeeper 的策略 293
20.3.1 開放策略代理 294
20.3.2 安裝Gatekeeper .294
20.3.3 配置策略 296
20.3.4 約束模板 300
20.3.5 創建約束 300
20.3.6 審計 301
20.3.7 變更 303
20.3.8 數據復制 305
20.3.9 指標 307
20.3.10 策略庫 307
20.4 小結 307
第21 章 多集群應用程序的部署 309
21.1 打好基礎 310
21.2 負載均衡 312
21.3 構建跨多個集群的應用程序 313
21.3.1 復制孤島:*簡單的跨區域模型 315
21.3.2 分片:區域數據 .316
21.3.3 更好的靈活性:微服務路由 317
21.4 小結 318
第22 章 組織應用程序 . 319
22.1 指導原則 319
22.1.1 將文件系統作為唯一可信的真相來源.319
22.1.2 代碼審查的作用 .320
22.1.3 特性門控 321
22.2 在源代碼管理中管理應用程序 .322
22.2.1 文件系統的布局 .322
22.2.2 管理周期性的版本 323
22.3 從開發、測試與部署的角度組織應用程序的結構 .325
22.3.1 目標 326
22.3.2 發布的進展326
22.4 使用模板為應用程序添加參數 .328
22.4.1 使用Helm 和模板實現參數化 .328
22.4.2 文件系統布局的參數化 329
22.5 部署全球性的應用程序 330
22.5.1 全球部署架構 330
22.5.2 實現全球部署 332
22.5.3 面向全球部署的儀表板和監視 333
22.6 小結 334
附錄 構建自己的Kubernetes 集群 335
展開全部
KUBERNETES即學即用(第三版) 作者簡介
Brendan Burns,是Kubernetes的合伙創始人,微軟Azure的杰出工程師,主要負責領導開發運維、開源以及微服務等團隊。Joe Beda是Kubernetes的合伙創始人,曾任VMware的首席工程師,最z近剛剛退休。
Kelsey Hightower,是谷歌云計算部門的工程師兼開發倡導者,主要負責領導軟件開發與發行工作。Lachlan Evenson是微軟Azure容器計算團隊的首席產品經理。他通過實踐教學幫助很多人學會了使用Kubernetes。