Kubernetes 從入門到 DevOps 企業應用實戰

韓先超

  • 出版商: 清華大學
  • 出版日期: 2023-09-01
  • 售價: $768
  • 貴賓價: 9.5$730
  • 語言: 簡體中文
  • 頁數: 460
  • 裝訂: 平裝
  • ISBN: 7302644349
  • ISBN-13: 9787302644347
  • 相關分類: DevOpsKubernetes
  • 立即出貨

  • Kubernetes 從入門到 DevOps 企業應用實戰-preview-1
  • Kubernetes 從入門到 DevOps 企業應用實戰-preview-2
  • Kubernetes 從入門到 DevOps 企業應用實戰-preview-3
Kubernetes 從入門到 DevOps 企業應用實戰-preview-1

買這商品的人也買了...

商品描述

《Kubernetes從入門到DevOps企業應用實戰》以實戰為主,內容涵蓋容器技術、Kubernetes核心資源以及基於Kubernetes的企業級實踐。從容器基礎知識開始,由淺入深,闡述Kubernetes各個方面的知識,並提供大量實際項目和應用場景。全書共20章,第1~3章講解容器技術,這是理解Kubernetes的必要基礎,主要介紹容器的定義、創建和管理容器、容器網絡和存儲等方面的知識。第4章講解如何使用Kubeadm和二進制文件安裝高可用Kubernetes集群。第5~12章講解Kubernetes的核心資源,包括Pod、Deployment、Service、Ingress等資源的定義、使用和管理方法,以及實際應用場景。第13~20章講解基於Kubernetes的企業實踐,介紹如何使用Kubernetes解決實際問題,包括使用Kubernetes進行應用程序的部署、容器雲平臺的構建、流量治理、監控、自動化擴縮容和灰度發布等項目與案例。 《Kubernetes從入門到DevOps企業應用實戰》基於Kubernetes 1.27新版本編寫(本書的內容也適合1.20之後的所有版本),從零基礎開始,涵蓋理論知識、企業級案例,以及自動化運維DevOps體系和一些大廠架構設計思路,適合雲原生領域的從業者、Kubernetest初學者、運維和開發人員使用,也可以作為企業內訓、培訓機構和大中專院校的教學用書。

目錄大綱

目    錄

第1章  Docker初探 1

1.1  Docker概述 1

1.1.1  Docker是什麽 1

1.1.2  Docker的版本 2

1.1.3  學習Docker的方式 2

1.2  Docker的組成與特點 2

1.2.1  Docker的組成 2

1.2.2  Docker的特點 4

1.3  安裝和配置Docker 5

1.3.1  配置主機名 5

1.3.2  關閉Firewalld防火牆 6

1.3.3  關閉SELinux 6

1.3.4  配置時間同步 7

1.3.5  編寫計劃任務 7

1.3.6  重啟crond服務使計劃任務生效 8

1.3.7  安裝基礎軟件包 8

1.3.8  安裝Docker-CE 9

1.3.9  修改內核參數 11

1.3.10  配置Docker鏡像加速器 13

1.4  Docker鏡像與容器 14

1.4.1  Docker鏡像 14

1.4.2  Docker容器 17

1.5  案例:通過Docker部署Nginx服務 24

1.5.1  基於CentOS鏡像運行一個Docker容器 24

1.5.2  查看Docker容器是否正常運行 24

1.5.3  在Docker中安裝Nginx容器 25

1.5.4  在Docker容器中通過yum安裝Nginx 26

1.6  本章小結 28

第2章  Dockerfile構建企業級鏡像 29

2.1  Dockerfile語法詳解 29

2.2  Dockerfile構建企業級鏡像 43

2.2.1  案例:Dockerfile構建Nginx鏡像 43

2.2.2  案例:Dockerfile構建Tomcat鏡像 48

2.3  本章小結 50

第3章  Docker私有鏡像倉庫Harbor 51

3.1  Harbor的概念及證書簽發 51

3.2  安裝Harbor 53

3.3  Harbor圖形界面使用說明 57

3.4  測試使用Harbor私有鏡像倉庫 59

3.5  Harbor高可用 62

3.6  本章小結 63

第4章  Kubeadm快速搭建Kubernetes集群 64

4.1  初始化實驗環境 65

4.1.1  配置靜態IP地址 67

4.1.2  配置機器主機名 68

4.1.3  配置主機hosts文件 68

4.1.4  配置控制節點到工作節點無密碼登錄 68

4.1.5  關閉交換分區 69

4.1.6  修改機器內核參數 70

4.1.7  關閉Firewalld防火牆 72

4.1.8  關閉SELinux 72

4.1.9  配置安裝Docker和Containerd需要的阿裡雲的在線yum源 73

4.1.10  配置安裝Kubernetes組件需要的阿裡雲的在線yum源 74

4.1.11  配置時間同步 75

4.1.12  安裝Docker-CE和Containerd服務 76

4.2  安裝Kubernetes集群 80

4.2.1  安裝初始化Kubernetes集群需要的軟件包 80

4.2.2  Kubeadm初始化Kubernetes集群 81

4.2.3  配置Kubectl的配置文件config 83

4.3  擴容Kubernetes集群 85

4.3.1  添加第一個工作節點 85

4.3.2  添加第二個工作節點 86

4.4  安裝Kubernetes網絡插件Calico 88

4.4.1  安裝Calico 88

4.4.2  Calico的配置 89

4.4.3  calico-kube-controllers解析 94

4.5  測試Kubernetes集群是否健康 95

4.5.1  測試在Kubernetes中創建的Pod是否可以正常訪問網絡 95

4.5.2  測試CoreDNS是否正常 96

4.5.3  延長證書 96

4.6  本章小結 99

第5章  Kubernetes核心資源Pod 100

5.1  Pod是什麽 100

5.1.1  Pod基本介紹 100

5.1.2  Pod如何管理多個容器 101

5.1.3  Pod網絡 102

5.1.4  Pod存儲 102

5.2  Pod的工作方式 103

5.2.1  自主式Pod 103

5.2.2  控制器管理的Pod 107

5.3  如何創建一個Pod資源 111

5.3.1  通過YAML文件創建Pod資源 112

5.3.2  Pod資源清單編寫技巧 113

5.3.3  創建一個完整的Pod資源 141

5.3.4  和Pod相關的命令解讀 144

5.4  nodeName和nodeSelector 146

5.4.1  nodeName實例 147

5.4.2  nodeSelector實例 148

5.5  親和性、污點和容忍度 149

5.5.1  節點親和性 149

5.5.2  Pod親和性和反親和性 154

5.5.3  污點和容忍度 160

5.6  Pod生命周期和健康探測 165

5.6.1  初始化容器initcontainer 166

5.6.2  存活探測 167

5.6.3  就緒探測 170

5.6.4  容器鉤子 172

5.7  本章小結 174

第6章  ReplicaSet和Deployment控制器管理Pod 175

6.1  ReplicaSet如何管理Pod 176

6.1.1  ReplicaSet概述 176

6.1.2  ReplicaSet資源清單文件的編寫技巧 176

6.2  ReplicaSet管理Pod案例:部署Guestbook留言板 178

6.3  ReplicaSet管理Pod實例:擴容、縮容、更新 180

6.4  Deployment如何管理Pod 183

6.4.1  Deployment概述 183

6.4.2  Deployment如何管理ReplicaSet和Pod 184

6.5  Deployment資源清單文件的編寫技巧 185

6.5.1  查看Deployment資源對象YAML文件的組成 186

6.5.2  查看Deployment下的spec字段 186

6.6  Deployment管理Pod案例解析 188

6.7  Deployment管理Pod:擴容和縮容 190

6.7.1  電商網站訪問量急增——擴容Pod 190

6.7.2  電商網站淡季或業務低峰期——縮容Pod 191

6.8  基於Deployment實現Pod滾動更新——WebApp應用版本升級 192

6.9  本章小結 195

第7章  Service四層負載均衡 197

7.1  Service的概念與原理 197

7.1.1  Service基本介紹 197

7.1.2  Kubernetes集群中的3類IP地址 198

7.2  創建Service資源 200

7.2.1  創建Service資源的方法 200

7.2.2  案例:用YAML文件創建Service資源 200

7.2.3  查看定義Service資源需要的字段 202

7.2.4  Service的4種Type類型 203

7.2.5  Service的埠定義 206

7.2.6  創建Service:類型是ClusterIP 207

7.2.7  創建Service:類型是NodePort 209

7.2.8  創建Service:類型是ExternalName 212

7.3  本章小結 215

第8章  Kubernetes持久化存儲 216

8.1  Kubernetes支持的持久化存儲類型 216

8.1.1  Kubernetes持久化存儲:emptyDir案例 218

8.1.2  Kubernetes持久化存儲:hostPath案例 218

8.1.3  Kubernetes持久化存儲:NFS案例 219

8.2  Kubernetes持久化存儲:PV和PVC 221

8.2.1  PV和PVC概述 221

8.2.2  創建Pod,使用PVC作為持久化存儲捲 225

8.3  Kubernetes存儲類:StorageClass 228

8.4  本章小結 231

第9章  Kubernetes控制器:StatefulSet 232

9.1  StatefulSet控制器的概念和原理 233

9.1.1  為什麽使用Headless Service 233

9.1.2  為什麽使用volumeClaimTemplate 233

9.2  StatefulSet資源清單文件的編寫技巧 235

9.2.1  定義API版本和資源類型 235

9.2.2  定義StatefulSet的spec字段 235

9.2.3  定義Pod模板 236

9.3  StatefulSet使用案例:部署Web站點 236

9.3.1  創建存儲類 236

9.3.2  創建StatefulSet資源 237

9.3.3  查看StatefulSet是否創建成功 238

9.3.4  查看StatefulSet管理的Pod 238

9.4  StatefulSet管理Pod:擴容、縮容和更新案例 239

9.4.1  案例1:擴容 239

9.4.2  案例2:縮容 239

9.4.3  案例3:更新 239

9.5  本章小結 240

第10章  Kubernetes控制器:DaemonSet 241

10.1  DaemonSet如何管理Pod 242

10.2  DaemonSet資源創建方法 242

10.2.1  DaemonSet資源清單的定義方法 242

10.2.2  DaemonSet使用案例:部署日誌收集組件Fluentd 244

10.2.3  DaemonSet管理Pod:滾動更新 247

10.3  本章小結 248

第11章  配置管理中心ConfigMap和Secret 250

11.1  ConfigMap概述 251

11.2  ConfigMap的創建方法 251

11.3  案例:使用ConfigMap維護Pod中容器的配置信息 253

11.3.1  通過環境變量引入:configMapKeyRef 253

11.3.2  通過環境變量引入:使用envfrom 255

11.3.3  把ConfigMap做成Volume,掛載到Pod 256

11.4  Secret基本介紹及使用案例 257

11.5  本章小結 259

第12章  Ingress和Ingress Controller 260

12.1  Ingress和Ingress Controller基本介紹和安裝 260

12.1.1  使用Ingress Controller代理Kubernetes內部Pod的流程 260

12.1.2  安裝Ingress Controller 262

12.2  案例:測試Ingress HTTP代理Tomcat 262

12.3  本章小結 266

第13章  搭建Prometheus+Grafana監控平臺 267

13.1  Prometheus基本介紹 267

13.1.1  Prometheus的特點 268

13.1.2  Prometheus生態系統常用組件介紹 269

13.1.3  Prometheus採集數據流程 270

13.1.4  Prometheus查詢語言PromQL 271

13.2  安裝和配置Prometheus 273

13.2.1  安裝和配置Prometheus 273

13.2.2  監控利器Node-Exporter 283

13.3  可視化UI界面Grafana的安裝和配置 287

13.3.1  Grafana介紹 287

13.3.2  安裝Grafana 287

13.3.3  Grafana界面接入Prometheus數據源 290

13.4  配置Alertmanager發送告警 297

13.4.1  案例:配置Alertmanager發送告警到QQ郵箱 297

13.4.2  案例:配置Alertmanager發送告警到釘釘群組 307

13.5  本章小結 308

第14章  基於Jenkins+Kubernetes構建企業級DevOps容器雲平臺 309

14.1  Kubernetes助力DevOps企業落地實踐 309

14.1.1  DevOps的基本概念 309

14.1.2  Kubernetes在DevOps中的核心作用 311

14.1.3  在Kubernetes集群安裝和配置Jenkins 312

14.1.4  案例:使用Jenkins將代碼自動化部署到Kubernetes集群 328

14.2  Jenkins Pipeline語法介紹 335

14.2.1  Jenkins Pipeline介紹 335

14.2.2  為什麽用Jenkins Pipeline 335

14.2.3  Jenkins Pipeline聲明式語法 335

14.2.4  Jenkins Pipeline腳本式語法 344

14.3  本章小結 346

第15章  新一代服務網格Istio結合Kubernetes實現流量治理 347

15.1  認識Istio服務網格 347

15.1.1  Istio服務網格概述 347

15.1.2  Istio的核心特性 348

15.1.3  Istio的架構與功能 350

15.2  Istio組件詳解 353

15.2.1  Pilot 353

15.2.2  Envoy 354

15.2.3  Citadel 355

15.2.4  Galley 355

15.2.5  其他組件 356

15.3  在Kubernetes平臺安裝Istio 356

15.3.1  準備安裝Istio的壓縮包 356

15.3.2  安裝Istio 357

15.4  案例:Istio結合Kubernetes部署在線書店Bookinfo 359

15.4.1  在線書店(Bookinfo)項目介紹 359

15.4.2  在線書店的部署 360

15.4.3  啟動應用服務 360

15.4.4  卸載Bookinfo服務 364

15.5  通過Istio實現灰度發布 366

15.5.1  什麽是灰度發布 366

15.5.2  使用Istio進行金絲雀發布 366

15.6  Istio流量治理實例 370

15.6.1  斷路器 370

15.6.2  超時 376

15.6.3  故障註入和重試 383

15.7  分佈式追蹤系統Jaeger 386

15.8  分佈式追蹤系統Kiali 390

15.9  本章小結 392

第16章  高並發場景下基於Kubernetes實現自動擴縮容 393

16.1  Metrics Server在自動擴縮容中的核心作用 393

16.1.1  Metrics Server的部署方式 394

16.1.2  Metrics Server的具體應用 399

16.2  水平Pod自動擴縮容HPA 400

16.2.1  HPA基本介紹 400

16.2.2  HPA設置和使用案例 400

16.3  垂直Pod自動擴縮容VPA 403

16.3.1  VPA基本介紹 403

16.3.2  VPA設置和使用案例 404

16.4  本章小結 408

第17章  基於Kubernetes搭建高吞吐量的日誌收集平臺 409

17.1  常見的日誌收集方案對比分析 409

17.2  EFK案例分享——組件部署 411

17.2.1  步驟一:部署Elasticsearch 411

17.2.2  步驟二:部署Fluentd服務 414

17.2.3  步驟三:部署Kibana服務 417

17.2.4  步驟四:驗證 419

17.3  ELK案例分享——步驟說明 420

17.3.1  創建命名空間 420

17.3.2  創建持久捲和持久捲聲明 420

17.3.3  創建Elasticsearch集群 421

17.3.4  創建Logstash集群 423

17.3.5  創建Kibana 425

17.4  EFK+Logstash+Kafka案例分享 426

17.4.1  安裝和配置Fluentd 426

17.4.2  創建Fluentd配置文件 427

17.4.3  安裝和配置Kafka和Logstash 428

17.4.4  安裝和配置Elasticsearch和Kibana 429

17.4.5  測試EFK日誌收集系統 430

17.5  本章小結 431

第18章  在Kubernetes集群部署代碼和服務 432

18.1  在Kubernetes集群部署Go代碼 433

18.2  在Kubernetes集群部署Python代碼 434

18.3  在Kubernetes集群部署Nginx服務 437

18.3.1  步驟一:編寫Nginx部署所需的Deployment和Service資源定義文件 437

18.3.2  步驟二:在Kubernetes集群上部署Nginx服務 438

18.4  在Kubernetes集群部署Tomcat服務 438

18.4.1  步驟一:創建命名空間 439

18.4.2  步驟二:部署Tomcat服務 439

18.5  本章小結 440

第19章  K3s實際應用場景及案例分享 442

19.1  K3s應用領域 442

19.1.1  邊緣計算 442

19.1.2  嵌入式設備 443

19.1.3  雲原生領域 444

19.1.4  多雲管理 444

19.2  K3s實戰案例分享 445

19.3  安裝和使用K3s 445

19.3.1  安裝K3s 445

19.3.2  使用K3s 446

19.4  本章小結 447

第20章  Kubernetes原生的CI/CD工具Tekton 449

20.1  Tekton基本介紹和案例演示 449

20.1.1  Tekton概述 449

20.1.2  使用Tekton構建和測試應用程序 451

20.2  使用Tekton構建CI/CD流水線最佳實踐 454

20.2.1  創建應用程序代碼 454

20.2.2  創建Docker鏡像 455

20.2.3  創建Tekton資源 455

20.2.4  執行CI/CD流程 458

20.3  本章小結 460