雲原生 Kubernetes 全棧架構師實戰
杜寬
- 出版商: 清華大學
- 出版日期: 2022-05-01
- 售價: $828
- 貴賓價: 9.5 折 $787
- 語言: 簡體中文
- ISBN: 730260388X
- ISBN-13: 9787302603887
-
相關分類:
Kubernetes
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$680$537 -
$834$792 -
$800$600 -
$714$678 -
$680$537 -
$1,223Kubernetes 權威指南:從 Docker 到 Kubernetes 實踐全接觸, 5/e
-
$500$390 -
$580$458 -
$297CKA/CKAD 應試指南 : 從 Docker 到 Kubernetes 完全攻略
-
$520$406 -
$834$792 -
$700$553 -
$800$624 -
$599$569 -
$1,280$1,011 -
$780$608 -
$560$420 -
$520$390 -
$580$493 -
$650$507 -
$580$435 -
$880$695 -
$580$435 -
$720$562 -
$768$730
相關主題
商品描述
本書以一個Kubernetes工程師的視角,全面系統地介紹Kubernetes常見的知識點、企業應用實踐及運維管理方法。本書共分18章,第1、2章介紹如何快速搭建高可用的Kubernetes集群;第3~7章介紹Docker的基礎和鏡像的製作優化,以及Kubernetes的基礎概念(Master、Node和Pod)、核心調度資源(Deployment、StatefulSet、DaemonSet、CronJob)、服務發布(Service和Ingress)和配置管理(ConfigMap和Secret)。第8~11章主要介紹Kubernetes的持久化存儲、動態存儲、CSI、高級調度(容忍、污點和親和力)、服務質量、權限管理、Kubernetes資源配額管理。第12、13章主要介紹雲原生存儲、中間件容器化、Operator和Helm的使用。第14~16章主要介紹針對Kubernetes的日誌收集(EFK)、監控告警(Prometheus和Grafana)、生產級服務發布Ingress的使用。第17章主要介紹基於Kubernetes、Jenkins、Harbor、GitLab等工具建設生產級的DevOps平臺,實現開發、測試、UAT、生產環境的流水線設計。第18章主要介紹服務網格Istio的使用,實現對Kubernetes內部服務的細粒度流量管理。 本書從概念到實踐,從手工到自動化,內容翔實且豐富,其中的範例與項目均在實踐中多次驗證,可直接用於生產環境。本書適合Kubernetes初學者、開發人員、運維人員、架構師使用,也可以作為培訓機構和大專院校的教學用書。
目錄大綱
目 錄
第1篇 安 裝 篇
第1章 Kubeadm安裝高可用K8s集群 2
1.1 基本環境配置 2
1.2 內核配置 5
1.3 K8s組件和Runtime安裝 7
1.3.1 Containerd作為Runtime 7
1.3.2 Docker作為Runtime 9
1.3.3 安裝Kubernetes組件 9
1.4 高可用組件安裝 10
1.5 集群初始化 14
1.6 Master實現高可用 17
1.7 Node節點的配置 17
1.8 Token過期處理 18
1.9 Calico組件的安裝 18
1.10 Metrics部署 19
1.11 Dashboard部署 20
1.11.1 安裝Dashboard 20
1.11.2 登錄Dashboard 21
1.12 註意事項 23
1.13 小結 24
第2章 二進制安裝高可用K8s集群 25
2.1 基本環境配置 25
2.2 內核配置 28
2.3 基本組件安裝 30
2.3.1 Containerd作為Runtime 30
2.3.2 Docker作為Runtime 31
2.3.3 K8s及Etcd的安裝 32
2.4 生成證書 33
2.4.1 Etcd證書 33
2.4.2 K8s組件證書 34
2.5 高可用配置 37
2.6 Etcd集群配置 38
2.6.1 創建Etcd的配置文件 38
2.6.2 創建Service 38
2.7 K8s Master節點配置 39
2.7.1 APIServer 39
2.7.2 Controller Manager 40
2.7.3 Scheduler 40
2.8 TLS Bootstrapping配置 41
2.9 Node節點配置 42
2.9.1 Kubelet配置 42
2.9.2 kube-proxy配置 44
2.10 安裝Calico 46
2.11 安裝CoreDNS 47
2.12 安裝Metrics Server 47
2.13 安裝Dashboard 47
2.14 小結 48
第2篇 基 礎 篇
第3章 Docker基礎 50
3.1 Docker介紹 50
3.2 Docker安裝 51
3.3 Docker基本命令 51
3.4 Dockerfile的編寫 57
3.5 鏡像大小優化 61
3.6 多階段構建 63
3.7 小結 65
第4章 Kubernetes的基礎概念 66
4.1 為什麽要用Kubernetes 66
4.1.1 對於開發人員 67
4.1.2 對於運維人員 67
4.2 Kubernetes帶來的挑戰 68
4.3 Kubernetes架構解析 69
4.4 Master節點 70
4.5 Node節點 71
4.6 Pod的概念 72
4.6.1 什麽是Pod 72
4.6.2 Pod探針 74
4.6.3 Pod鏡像拉取策略和重啟策略 75
4.6.4 創建一個Pod 75
4.7 小結 78
第5章 Kubernetes調度基礎 79
5.1 Replication Controller和ReplicaSet 79
5.1.1 Replication Controller 79
5.1.2 ReplicaSet 80
5.2 無狀態應用管理Deployment 81
5.2.1 創建Deployment 82
5.2.2 更新Deployment 84
5.2.3 回滾Deployment 85
5.2.4 擴容Deployment 86
5.2.5 暫停和恢復Deployment更新 87
5.2.6 更新Deployment的註意事項 88
5.3 有狀態應用管理StatefulSet 89
5.3.1 StatefulSet的基本概念 89
5.3.2 StatefulSet的註意事項 90
5.3.3 定義一個StatefulSet資源文件 90
5.3.4 創建StatefulSet 92
5.3.5 StatefulSet創建Pod的流程 92
5.3.6 StatefulSet擴容和縮容 93
5.3.7 StatefulSet更新策略 94
5.3.8 刪除StatefulSet 96
5.4 守護進程集DaemonSet 97
5.4.1 什麽是DaemonSet 97
5.4.2 定義一個DaemonSet 98
5.4.3 創建DaemonSet 100
5.4.4 更新和回滾DaemonSet 101
5.5 CronJob 102
5.5.1 創建CronJob 102
5.5.2 可用參數的配置 103
5.6 小結 105
第6章 Kubernetes服務發布基礎 106
6.1 標簽和選擇器 106
6.1.1 定義標簽 107
6.1.2 選擇器 108
6.1.3 修改標簽 109
6.1.4 刪除標簽 109
6.2 Service 110
6.2.1 Service的基本概念 110
6.2.2 定義Service 111
6.2.3 無選擇器的Service和Endpoint 111
6.2.4 ExternalName Service 113
6.2.5 Service代理模式 113
6.2.6 多埠Service 114
6.2.7 Service的類型 115
6.2.8 Kubernetes服務發現 116
6.3 Ingress 118
6.3.1 基本概念 118
6.3.2 創建一個Ingress 119
6.3.3 Ingress使用入門 121
6.3.4 更新Ingress 123
6.4 小結 123
第7章 Kubernetes配置管理 124
7.1 什麽是ConfigMap 124
7.2 創建ConfigMap 125
7.2.1 基於目錄創建ConfigMap 125
7.2.2 基於文件創建ConfigMap 126
7.2.3 基於ENV文件創建ConfigMap 127
7.2.4 基於字符值創建ConfigMap 128
7.3 ConfigMap實踐 128
7.3.1 使用valueFrom定義容器環境變量 128
7.3.2 使用envFrom定義容器的環境變量 130
7.3.3 以文件形式掛載ConfigMap 131
7.3.4 自定義文件名掛載ConfigMap 132
7.3.5 指定掛載的文件權限 132
7.4 ConfigMap限制 133
7.5 加密數據管理Secret 134
7.5.1 創建Secret 134
7.5.2 解碼Secret 135
7.6 Secret實踐 136
7.6.1 以文件形式掛載Secret 136
7.6.2 自定義文件名掛載 137
7.6.3 Secret作為環境變量 138
7.6.4 Secret文件權限 138
7.7 常用的Secret類型 139
7.7.1 Docker鏡像倉庫Secret 139
7.7.2 HTTPS證書類型的Secret 140
7.8 SubPath解決掛載覆蓋問題 141
7.9 ConfigMap和Secret熱更新 141
7.10 小結 143
第3 篇 進 階 篇
第8章 Kubernetes存儲入門 146
8.1 Volume的概念 146
8.2 Volume的類型 147
8.3 示例1:通過emptyDir共享數據 148
8.4 示例2:使用HostPath掛載宿主機文件 149
8.5 示例3:掛載NFS至容器 150
8.6 PersistentVolume 151
8.6.1 PV回收策略 152
8.6.2 PV訪問策略 152
8.6.3 基於NFS的PV 153
8.6.4 基於HostPath的PV 154
8.6.5 基於Ceph RBD的PV 154
8.6.6 PV的狀態 155
8.7 PersistentVolumeClaim 155
8.7.1 PVC的創建 156
8.7.2 PVC的使用 157
8.8 動態存儲StorageClass 158
8.8.1 定義StorageClass 158
8.8.2 整合StorageClass和Ceph RBD 159
8.9 存儲的未來:CSI 162
8.9.1 通過CSI連接CephFS 163
8.9.2 通過CSI連接Ceph RBD 169
8.10 小結 173
第9章 Kubernetes高級調度 174
9.1 初始化容器InitContainer 174
9.1.1 InitContainer的基本概念 174
9.1.2 示例1:等待依賴服務啟動 175
9.1.3 示例2:服務註冊 176
9.1.4 示例3:克隆Git代碼到容器中 176
9.1.5 示例4:多個初始化容器使用 177
9.2 臨時容器Ephemeral Containers 178
9.2.1 臨時容器的概念 178
9.2.2 開啟臨時容器功能 178
9.2.3 臨時容器的使用 179
9.3 自動擴縮容HPA 182
9.3.1 什麽是HPA 182
9.3.2 HPA實踐——實現Web服務器的自動伸縮特性 182
9.4 Taint和Toleration 184
9.4.1 容忍和污點的基本概念 184
9.4.2 使用案例 187
9.4.3 基於Taint的驅逐 187
9.5 Affinity親和力 189
9.5.1 Affinity的分類 189
9.5.2 Node Affinity 190
9.5.3 PodAffinity和PodAntiAffinity 191
9.5.4 示例1:同一個應用部署在不同的宿主機 193
9.5.5 示例2:同一個應用不同副本的固定節點 194
9.5.6 示例3:應用和緩存盡量部署在同一個域內 195
9.6 小結 196
第10章 Kubernetes資源管理 197
10.1 ResourceQuota 197
10.1.1 什麽是資源配額 197
10.1.2 定義一個ResourceQuota 198
10.1.3 ResourceQuota的使用 199
10.2 LimitRange 201
10.2.1 LimitRange的用途 201
10.2.2 示例1:配置默認的requests和limits 201
10.2.3 示例2:配置requests和limits的範圍 202
10.2.4 示例3:限制申請存儲空間的大小 204
10.3 QoS 204
10.3.1 什麽是服務質量保證 204
10.3.2 示例1:實現QoS為Guaranteed的Pod 206
10.3.3 示例2:實現QoS為Burstable的Pod 206
10.3.4 示例3:實現QoS為BestEffort的Pod 207
10.4 小結 208
第11章 Kubernetes安全入門 209
11.1 權限管理RBAC 209
11.1.1 RBAC的基本概念 209
11.1.2 Role和ClusterRole 210
11.1.3 RoleBinding和ClusterRoleBinding 211
11.1.4 對集群資源的權限控制 212
11.1.5 聚合ClusterRole 213
11.1.6 Role常用示例 214
11.1.7 RoleBinding常用示例 215
11.1.8 命令行的使用 216
11.1.9 K8s多租戶權限管理實踐 218
11.2 Network Policy 221
11.2.1 網絡策略的使用 221
11.2.2 網絡策略的註意事項 223
11.2.3 示例1:隔離中間件服務 224
11.2.4 示例2:服務發布限制於Ingress 228
11.3 小結 231
第4篇 高 級 篇
第12章 雲原生存儲Rook 234
12.1 Rook的安裝 235
12.2 一鍵部署Ceph集群 236
12.3 安裝Snapshot控制器 237
12.4 安裝Ceph客戶端工具和Dashboard 238
12.5 Ceph塊存儲的使用 240
12.5.1 創建StorageClass和Ceph的存儲池 240
12.5.2 掛載測試 242
12.5.3 StatefulSet volumeClaimTemplates 243
12.6 共享型文件系統的使用 245
12.6.1 創建共享型文件系統 245
12.6.2 創建共享型文件系統的StorageClass 246
12.6.3 掛載測試 246
12.7 PVC擴容 247
12.7.1 擴容文件共享型PVC 247
12.7.2 擴容塊存儲 249
12.8 PVC快照 249
12.8.1 創建SnapshotClass 250
12.8.2 創建快照 250
12.8.3 使用快照恢復數據 251
12.8.4 數據校驗 252
12.9 PVC克隆 253
12.10 測試數據清理 254
12.11 小結 255
第13章 中間件容器化 256
13.1 傳統架構如何管理中間件集群 256
13.2 Kubernetes如何管理中間件集群 257
13.2.1 Operator和Helm的區別 257
13.2.2 Kubernetes管理中間件集群的流程 258
13.3 Operator的使用 259
13.3.1 使用Operator安裝Redis集群 260
13.3.2 Redis集群一鍵擴容 263
13.3.3 集群清理 264
13.4 Helm的使用 265
13.4.1 安裝Helm客戶端 265
13.4.2 Helm客戶端命令入門 265
13.4.3 安裝Zookeeper集群至Kubernetes 267
13.4.4 安裝Kafka集群至Kubernetes 269
13.4.5 Kafka集群擴容 272
13.4.6 刪除Helm Release 273
13.5 小結 273
第5篇 運 維 篇
第14章 Kubernetes日誌收集 276
14.1 有哪些日誌需要收集 276
14.2 日誌採集工具有哪些 276
14.2.1 ELK & EFK 276
14.2.2 Filebeat 277
14.2.3 新貴Loki 277
14.3 使用EFK收集控制台日誌 278
14.3.1 部署Elasticsearch+Fluentd+Kibana 279
14.3.2 Kibana的使用 280
14.4 使用Filebeat收集自定義文件日誌 283
14.4.1 創建Kafka和Logstash 283
14.4.2 註入Filebeat Sidecar 284
14.4.3 清理 287
14.5 Loki初體驗 287
14.5.1 安裝Loki Stack 287
14.5.2 Loki語法入門 290
14.6 小結 292
第15章 Kubernetes監控告警 293
15.1 Prometheus的架構介紹 293
15.2 Prometheus的安裝 295
15.3 雲原生和非雲原生應用的監控流程 298
15.3.1 監控數據來源 298
15.3.2 什麽是ServiceMonitor 300
15.3.3 ServiceMonitor找不到監控主機排查 302
15.3.4 雲原生應用監控 307
15.3.5 非雲原生監控Exporter 311
15.4 黑盒監控 315
15.5 Prometheus靜態配置 315
15.6 Prometheus監控Windows(外部)主機 318
15.7 Prometheus語法PromQL入門 319
15.7.1 PromQL語法初體驗 319
15.7.2 PromQL操作符 323
15.7.3 PromQL常用函數 326
15.8 Alertmanager告警入門 329
15.8.1 Alertmanager配置文件解析 329
15.8.2 Alertmanager路由規則 331
15.8.3 Alertmanager郵件通知 332
15.8.4 Alertmanager企業微信通知 337
15.8.5 自定義告警模板 341
15.9 Prometheus告警實戰 343
15.9.1 PrometheusRule 343
15.9.2 告警通用配置步驟 344
15.10 小結 347
第16章 服務發布Ingress進階 348
16.1 安裝Ingress Nginx Controller 349
16.2 Ingress Nginx入門 350
16.3 Ingress Nginx域名重定向Redirect 352
16.4 Ingress Nginx前後端分離Rewrite 353
16.5 Ingress Nginx錯誤代碼重定向 354
16.6 Ingress Nginx SSL 355
16.7 Ingress Nginx匹配請求頭 357
16.8 Ingress Nginx基本認證 359
16.9 Ingress Nginx黑/白名單 360
16.9.1 配置黑名單 360
16.9.2 配置白名單 361
16.10 Ingress Nginx速率限制 362
16.11 使用Nginx實現灰度/金絲雀發布 363
16.11.1 創建v1版本 363
16.11.2 創建v2版本 363
16.11.3 Canary版本切入部分流量 364
16.11.4 測試灰度發布 364
16.12 環境清理 365
16.13 小結 366
第6篇 DevOps篇
第17章 DevOps實踐 368
17.1 CI/CD介紹 368
17.1.1 持續集成(CI) 368
17.1.2 持續交付(CD) 369
17.1.3 持續部署(CD) 369
17.1.4 CI和CD的區別 369
17.2 Jenkins流水線介紹 370
17.2.1 什麽是流水線 370
17.2.2 聲明式流水線 371
17.2.3 腳本化流水線 373
17.3 聲明式流水線的語法 374
17.3.1 sections 374
17.3.2 directives 382
17.3.3 parallel 392
17.4 Jenkinsfile的使用 394
17.4.1 Jenkinsfile初體驗 395
17.4.2 Jenkinsfile進階 398
17.5 DevOps平臺建設 405
17.5.1 安裝Jenkins 406
17.5.2 安裝GitLab 409
17.5.3 安裝Harbor 414
17.5.4 Jenkins憑證Credentials 419
17.5.5 配置Agent 422
17.5.6 Jenkins配置Kubernetes多集群 423
17.6 自動化構建Java應用 425
17.6.1 創建Java測試用例 425
17.6.2 定義Jenkinsfile 427
17.6.3 Jenkinsfile詳解 428
17.6.4 定義Dockerfile 433
17.6.5 定義Kubernetes資源 433
17.6.6 創建Jenkins任務 436
17.7 自動化構建Vue/H5前端應用 441
17.7.1 定義Jenkinsfile 441
17.7.2 定義Dockerfile 442
17.7.3 定義Kubernetes資源 442
17.7.4 創建Jenkins Job 444
17.8 自動化構建Golang項目 446
17.8.1 定義Jenkinsfile 446
17.8.2 定義Dockerfile 447
17.8.3 創建Jenkins Job 447
17.9 自動觸發構建 448
17.10 UAT及生產環境流水線設計 452
17.11 小結 456
第7篇 拓 展 篇
第18章 服務網格 458
18.1 服務網格概述 458
18.1.1 服務網格的基本概念 458
18.1.2 服務網格的功能 459
18.1.3 服務網格產品 460
18.2 Istio的基本概念 460
18.2.1 Istio的架構 461
18.2.2 Istio的組件 461
18.3 Istio的核心資源 463
18.3.1 VirtualService 463
18.3.2 DestinationRule 465
18.3.3 Gateway 466
18.4 安裝Istio 468
18.4.1 使用Operator部署Istio 468
18.4.2 配置自動註入 470
18.4.3 可視化工具Kiali 470
18.4.4 Prometheus和Grafana 472
18.5 Istio流量治理實踐 474
18.5.1 部署測試用例 474
18.5.2 Istio實現灰度部署 478
18.5.3 Istio實現AB測試 482
18.5.4 Istio註入延遲故障 484
18.5.5 Istio註入中斷故障 486
18.5.6 Istio快速超時配置 487
18.5.7 Istio地址重寫和重定向 488
18.5.8 Istio負載均衡算法 489
18.5.9 Istio熔斷 490
18.6 小結 492