《Kubernetes即學即用》是2021年中國電力出版社出版的圖書。
基本介紹
- 中文名:Kubernetes即學即用
- 出版時間:2021年
- 出版社:中國電力出版社
- ISBN:9787519856762
內容簡介,圖書目錄,
內容簡介
Kubernetes的時代已然到來。在短短几年內,這款容器編排器從根本上改變了開發人員和運維人員在雲中構建、部署,以及維護應用程式的方式。無論你是分散式系統的新手,還是多年來一直在部署雲原生應用程式的老手,Kubernetes都可以幫助你在速度、敏捷性、可靠性,以及效率等方面更上一層樓。
《Kubernetes即學即用(第二版)》作者長期致力於Kubernetes的概念抽象以及構建實踐,他們將通過該書向你展示怎樣將Kubernetes完美地融入分散式應用程式的生命周期。你將學習如何使用各種工具以及API來實現可擴展分散式系統的自動化,無論你的系統是線上服務、機器學習應用程式,還是樹莓派計算機集群。
創建和運行一個簡單的集群,了解Kubernetes的基本工作原理。
深入了解使用Kubernetes.Pod.服務、Ingress,以及副本集部署應用程式的細節。
將存儲集成到Kubernetes的容器化微服務中。
學習Kubernetes中的專用對象,例如守護進程集、作業、ConfigMap,以及Secret等。
掌握在Kubernetes中開發和部署應用程式的實戰經驗。
圖書目錄
前言 .1
第1 章 概述 .9
1.1 速度 10
1.1.1 不可變性的價值 . 11
1.1.2 聲明式配置 13
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
第2 章 創建和運行容器 22
2.1 容器鏡像 24
2.2 使用Docker 構建應用程式鏡像 26
2.2.1 Dockerfiles 26
2.2.2 最佳化鏡像的大小 . 28
2.2.3 鏡像安全. 30
2.3 多階段鏡像構建 30
2.4 將鏡像存儲到遠程倉庫 32
2.5 Docker 容器運行時 . 34
2.5.1 通過Docker 運行容器 . 34
2.5.2 探索kuard 應用程式. 34
2.5.3 限制資源使用 35
2.6 清理 36
2.7 小結 37
第3 章 部署Kubernetes 集群 38
3.1 在公共雲上安裝Kubernetes 39
3.1.1 Google Kubernetes Engine . 39
3.1.2 使用Azure Kubernetes 服務安裝Kubernetes 40
3.1.3 在Amazon Web Services 上安裝Kubernetes 41
3.2 使用minikube 在本地安裝Kubernetes . 41
3.3 在Docker 中運行Kubernetes 42
3.4 在樹莓派上運行Kubernetes 43
3.5 Kubernetes 客戶端 43
3.5.1 檢查集群狀態 43
3.5.2 列出Kubernetes 的工作節點 44
3.6 集群組件 47
3.6.1 Kubernetes 代理 47
3.6.2 Kubernetes DNS . 48
3.6.3 Kubernetes 用戶界面 48
3.7 小結 49
第4 章 常用的kubectl 命令 .50
4.1 命名空間 50
4.2 上下文 50
4.3 查看Kubernetes API 對象 51
4.4 創建、更新和銷毀Kubernetes 對象 52
4.5 給對象添加標籤和注釋 54
4.6 調試命令 54
4.7 自動補齊命令 56
4.8 查看集群的其他方法 . 57
4.9 小結 57
第5 章 Pod 58
5.1 Kubernetes 中的Pod 59
5.2 Pod 的套用思路 60
5.3 Pod 清單 61
5.3.1 創建Pod . 62
5.3.2 創建Pod 清單 62
5.4 運行Pod 63
5.4.1 查詢Pod 列表 63
5.4.2 Pod 的詳細信息 64
5.4.3 刪除Pod . 66
5.5 訪問Pod 66
5.5.1 使用連線埠轉發 66
5.5.2 通過日誌獲取更多信息 67
5.5.3 使用exec 在容器中運行命令 68
5.5.4 在容器之間複製檔案 68
5.6 健康檢查 69
5.6.1 存活探針. 69
5.6.2 就緒探針. 71
5.6.3 健康檢查的類型 . 71
5.7 資源管理 71
5.7.1 資源請求:所需的最少資源量 72
5.7.2 通過約束限制資源使用量 . 74
5.8 利用卷持久保存數據 . 75
5.8.1 在Pod 中使用卷 . 75
5.8.2 Pod 中卷的不同使用方式 76
5.8.3 使用遠程磁碟持久保存數據 . 77
5.9 綜合討論 78
5.10 小結 . 79
第6 章 標籤與注釋 .80
6.1 標籤 80
6.1.1 套用標籤. 82
6.1.2 修改標籤. 83
6.1.3 標籤選擇器 84
6.1.4 API 對象中的標籤選擇器 86
6.1.5 Kubernetes 架構中的標籤 87
6.2 注釋 88
6.3 清理 89
6.4 小結 90
第7 章 服務發現 91
7.1 什麼是服務發現? 91
7.2 服務對象 92
7.2.1 DNS 服務 93
7.2.2 就緒檢查. 95
7.3 向外公開集群服務 97
7.4 雲集成 98
7.5 高級集成 99
7.5.1 端點 99
7.5.2 手動發現服務 101
7.5.3 kube-proxy 與集群IP 102
7.5.4 集群IP 環境變數 . 103
7.6 連線到其他環境 104
7.7 清理 . 104
7.8 小結 . 105
第8 章 Ingress 的HTTP 負載均衡 106
8.1 Ingress 的規範與Ingress 控制器 107
8.2 安裝Contour 108
8.2.1 配置DNS. 109
8.2.2 配置本地的hosts 檔案 109
8.3 使用Ingress . 110
8.3.1 最簡單的用法 111
8.3.2 使用主機名 . 112
8.3.3 使用路徑 114
8.3.4 清理 115
8.4 Ingress 的高級話題和技巧 115
8.4.1 運行多個Ingress 控制器 . 115
8.4.2 多個Ingress 對象 . 116
8.4.3 Ingress 與命名空間 . 116
8.4.4 改寫路徑 117
8.4.5 提供TLS . 117
8.5 Ingress 的其他實現 119
8.6 Ingress 的未來 119
8.7 小結 . 120
第9 章 副本集 121
9.1 協調循環 122
9.2 Pod 與副本集的關聯 123
9.2.1 採用現有的容器 123
9.2.2 隔離容器 124
9.3 副本集的設計思想 124
9.4 副本集的規範 . 124
9.4.1 Pod 模板 125
9.4.2 標籤 125
9.5 創建副本集 126
9.6 檢查副本集 126
9.6.1 根據Pod 查找副本集 . 127
9.6.2 查找副本集管理的Pod 集合 . 127
9.7 副本集的伸縮 . 128
9.7.1 副本集的命令式伸縮:kubectl scale . 128
9.7.2 副本集的聲明式伸縮:kubectl apply 129
9.7.3 自動伸縮副本集 130
9.8 刪除副本集 131
9.9 小結 . 132
第10 章 部署 . 133
10.1 第一個部署 134
10.2 創建部署 . 136
10.3 管理部署 . 138
10.4 更新部署 . 139
10.4.1 擴展部署 139
10.4.2 更新容器鏡像 . 140
10.4.3 推出的歷史記錄 142
10.5 部署策略 . 145
10.5.1 重建策略 145
10.5.2 滾動更新策略 . 145
10.5.3 放慢部署速度以確保服務健康 149
10.6 刪除部署 . 151
10.7 監控部署 . 151
10.8 小結 152
第11 章 守護進程集 . 153
11.1 守護進程集調度器 . 154
11.2 創建守護進程集 155
11.3 將守護進程集限制到特定節點 157
11.3.1 向節點添加標籤 . 157
11.3.2 節點選擇器 158
11.4 更新守護進程集 159
11.5 刪除守護進程集 161
11.6 小結 161
第12 章 作業 . 162
12.1 作業對象 . 162
12.2 作業模式 . 163
12.2.1 一次性作業 163
12.2.2 並行性 168
12.2.3 工作佇列 170
12.3 定時作業 . 175
12.4 小結 176
第13 章 ConfigMap 與Secret 177
13.1 ConfigMap . 177
13.1.1 創建ConfigMap . 178
13.1.2 使用ConfigMap . 179
13.2 Secret 182
13.2.1 創建Secret 183
13.2.2 消費Secret 184
13.2.3 私有Docker 倉庫 186
13.3 命名約束 . 187
13.4 管理ConfigMap 和Secret 188
13.4.1 顯示列表 188
13.4.2 創建 . 189
13.4.3 更新 . 190
13.5 小結 192
第14 章 基於角色的訪問控制 193
14.1 基於角色的訪問控制 194
14.1.1 Kubernetes 中的身份 194
14.1.2 角色和角色綁定 195
14.1.3 Kubernetes 中的角色和角色綁定 196
14.2 RBAC 的管理技巧 . 199
14.2.1 使用can-i 測試授權 . 199
14.2.2 通過原始碼控制管理RBAC 199
14.3 高級主題 . 200
14.3.1 聚合ClusterRoles . 200
14.3.2 使用組進行綁定 201
14.4 小結 203
第15 章 存儲解決方案與Kubernetes 的集成 204
15.1 導入外部服務 205
15.1.1 沒有選擇器的服務 207
15.1.2 外部服務的局限性:健康檢查 209
15.2 運行可靠的單例 209
15.2.1 運行MySQL 單例服務 209
15.2.2 動態卷供應 214
15.3 利用狀態集實現Kubernetes 原生存儲 215
15.3.1 狀態集的屬性 . 215
15.3.2 利用狀態集手動複製MongoDB 216
15.3.3 自動化MongoDB 集群的創建 219
15.3.4 持久卷與狀態集 222
15.3.5 最後一步:存活探針 223
15.4 小結 224
第16 章 擴展Kubernetes . 225
16.1 擴展Kubernetes 意味著什麼 226
16.2 可擴展點 . 226
16.3 定製資源的模式 236
16.3.1 僅有數據 236
16.3.2 編譯器 237
16.3.3 操作器 237
16.3.4 如何入門 238
16.4 小結 238
第17 章 部署實際應用程式 239
17.1 Jupyter . 239
17.2 Parse . 241
17.2.1 前提條件 242
17.2.2 構建Parse 伺服器 . 242
17.2.3 部署parse-server 242
17.2.4 測試Parse . 244
17.3 Ghost. 244
17.4 Redis . 248
17.4.1 配置Redis 249
17.4.2 創建Redis 服務 . 251
17.4.3 部署Redis 251
17.4.4 使用Redis 集群 . 253
17.5 小結 254
第18 章 組織應用程式 256
18.1 我們的指導原則 256
18.1.1 以檔案為準 257
18.1.2 代碼審查的作用 257
18.1.3 特性門控 258
18.2 在原始碼管理中管理應用程式 259
18.2.1 檔案系統的布局 259
18.2.2 管理周期性的版本 260
18.3 為開發、測試與部署組織應用程式的結構 262
18.3.1 目標 . 262
18.3.2 發布的進展 263
18.4 使用模板為應用程式添加參數 264
18.4.1 使用Helm 和模板實現參數化 265
18.4.2 在檔案系統布局中使用參數 266
18.5 部署全球性的應用程式 266
18.5.1 全球部署架構 . 267
18.5.2 實現全球部署 . 268
18.5.3 面向全球部署的儀錶板和監視 270
18.6 小結 270
附錄 利用樹莓派搭建Kubernetes 集群 271
作者介紹 281
封面介紹 281