Kubernetes集群實戰(微課版)

王雅靜,成安霞

  • 出版商: 人民郵電
  • 出版日期: 2024-07-01
  • 售價: $479
  • 貴賓價: 9.5$455
  • 語言: 簡體中文
  • 頁數: 315
  • 裝訂: 平裝
  • ISBN: 7115640092
  • ISBN-13: 9787115640093
  • 相關分類: Kubernetes
  • 立即出貨 (庫存=1)

  • Kubernetes集群實戰(微課版)-preview-1
  • Kubernetes集群實戰(微課版)-preview-2
Kubernetes集群實戰(微課版)-preview-1

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

商品描述

本書全面、系統地講解Kubernetes的基礎知識和運維管理方法。本書共9個項目,包括從Docker轉向Kubernetes、部署Kubernetes集群、熟悉Kubernetes基本操作、部署和運行應用程序、發布應用程序、管理存儲和配置信息、Kubernetes調度、高效管理應用程序的部署,以及持續集成和持續部署。

本書結構清晰,在內容編寫方面註意難點分散、循序漸進,在文字敘述方面註意言簡意賅、突出重點,在實例選取方面註意實用性和針對性。為強化實踐性和可操作性,本書為每個知識點都配備了相應的操作示範,便於讀者快速上手。

本書可作為院校電腦相關專業、相關課程的教材,也可作為軟件開發人員、IT實施和運維工程師學習Kubernetes雲原生技術的參考,還可作為相關課程的培訓教材。

作者簡介

王雅静,男,副教授,山西曲沃人,现任山西国际商务职业学院副院长,山西省电子与信息教指委委员、山西省中国特色学徒制专委会委员。

近几年,发表论文十余篇,参编教材6本。其中SCI论文一篇,核心期刊发表论文2篇、主编十四五国家规划教材一本,山西省级规划教材一本。2023年指导学生参加山西省职业院校职业技能大赛获云计算赛项一等奖。

目錄大綱

項目1 從Docker轉向Kubernetes 1

【課堂學習目標】 2

知識目標 2

技能目標 2

素養目標 2

任務1.1 認識與安裝Docker 2

任務要求 2

相關知識 2

1.1.1 應用程序部署方式的演變 2

1.1.2 什麽是Docker 4

1.1.3 Docker架構 4

1.1.4 Docker版本 5

任務實現 6

任務1.1.1 安裝Docker Engine 6

任務1.1.2 瞭解docker命令的基本用法 8

任務1.1.3 運行一個容器 10

任務1.2 掌握Docker的基本操作方法 10

任務要求 10

相關知識 11

1.2.1 Docker鏡像基礎知識 11

1.2.2 Docker容器基礎知識 13

1.2.3 Docker註冊中心與倉庫 15

任務實現 17

任務1.2.1 鏡像和容器的基本操作 17

任務1.2.2 自建Docker註冊中心 19

任務1.3 構建鏡像並將應用程序容器化 20

任務要求 20

相關知識 21

1.3.1 鏡像的構建 21

1.3.2 應用程序鏡像的內容 23

1.3.3 應用程序容器化的基本步驟 23

任務實現 將應用程序容器化 24

任務1.4 轉向Kubernetes 28

任務要求 28

相關知識 28

1.4.1 什麽是Kubernetes 28

1.4.2 為什麽要使用Kubernetes 29

1.4.3 Kubernetes的主要特性 30

1.4.4 Kubernetes與雲原生 30

任務實現 31

任務1.4.1 瞭解Kubernetes的應用 31

任務1.4.2 瞭解Kubernetes在國內企業中的實際應用 32

項目小結 33

課後練習 34

項目實訓 35

實訓1 安裝Docker Engine並進行鏡像和容器的基本操作 35

實訓2 對Node.js Web應用程序進行容器化 35

項目2 部署Kubernetes集群 36

【課堂學習目標】 36

知識目標 36

技能目標 36

素養目標 36

任務2.1 創建Kubernetes集群 36

任務要求 36

相關知識 37

2.1.1 Kubernetes集群的組件 37

2.1.2 控制平面組件 38

2.1.3 工作節點組件 39

2.1.4 功能插件 40

2.1.5 Kubernetes部署方式 40

2.1.6 kubeadm工具 41

2.1.7 高可用Kubernetes集群 41

任務實現 42

任務2.1.1 規劃Kubernetes集群 42

任務2.1.2 準備Kubernetes集群安裝環境 43

任務2.1.3 部署Kubernetes集群節點 47

任務2.1.4 安裝Pod網絡插件 50

任務2.1.5 測試Kubernetes集群 52

任務2.1.6 使用containerd命令行工具crictl 52

任務2.2 部署和使用Kubernetes Dashboard 53

任務要求 53

相關知識 53

2.2.1 Kubernetes集群資源管理方式 53

2.2.2 Kubernetes Dashboard的功能 54

任務實現 54

任務2.2.1 安裝Kubernetes Dashboard 54

任務2.2.2 使用Kubernetes Dashboard 56

項目小結 59

課後練習 60

項目實訓 61

實訓1 使用kubeadm工具部署三節點Kubernetes集群 61

實訓2 安裝和使用Kubernetes Dashboard 61

項目3 熟悉Kubernetes基本操作 62

【課堂學習目標】 62

知識目標 62

技能目標 62

素養目標 62

任務3.1 理解和使用Kubernetes對象 62

任務要求 62

相關知識 63

3.1.1 什麽是Kubernetes對象 63

3.1.2 Kubernetes對象的規約和狀態 64

3.1.3 描述Kubernetes對象 64

3.1.4 Kubernetes對象的管理方法 65

3.1.5 對象的名稱和UID 66

3.1.6 標簽和註解 67

3.1.7 名稱空間 68

任務實現 69

任務3.1.1 創建Kubernetes對象 69

任務3.1.2 操作對象的標簽 71

任務3.1.3 操作名稱空間 72

任務3.2 使用kubectl命令 73

任務要求 73

相關知識 73

3.2.1 kubectl命令的基本用法 73

3.2.2 kubectl常用子命令 74

3.2.3 kubectl命令支持的資源類型 75

3.2.4 kubectl命令支持的輸出格式 76

任務實現 76

任務3.2.1 熟悉kubectl命令的用法 76

任務3.2.2 使用kubectl命令輔助生成YAML配置文件 77

任務3.3 創建和管理Pod 79

任務要求 79

相關知識 79

3.3.1 什麽是Pod 79

3.3.2 Pod與容器 79

3.3.3 Pod的定義 81

3.3.4 Pod的生命周期 82

3.3.5 Pod的健康檢查機制 83

任務實現 84

任務3.3.1 創建多容器Pod 84

任務3.3.2 為Pod及其容器設置資源配額 86

任務3.3.3 實現Pod容器的健康檢查 88

項目小結 89

課後練習 90

項目實訓 91

實訓1 操作指定名稱空間中對象的標簽 91

實訓2 創建一個多容器Pod並進行測試 91

項目4 部署和運行應用程序 92

【課堂學習目標】 92

知識目標 92

技能目標 92

素養目標 92

任務4.1 使用Deployment運行無狀態應用程序 93

任務要求 93

相關知識 93

4.1.1 工作負載資源與控制器 93

4.1.2 ReplicationController、ReplicaSet和Deployment 94

4.1.3 Deployment的應用場景 94

4.1.4 Deployment的基本用法 95

任務實現 95

任務4.1.1 創建Deployment 95

任務4.1.2 測試Deployment的自動修復功能 99

任務4.1.3 更新Deployment 99

任務4.1.4 回滾Deployment 101

任務4.1.5 暫停、恢復Deployment的更新 103

任務4.1.6 擴縮容Deployment 104

任務4.2 使用DaemonSet部署集群守護進程集 105

任務要求 105

相關知識 105

4.2.1 什麽是DaemonSet 105

4.2.2 DaemonSet的應用場景 105

任務實現 106

任務4.2.1 使用DaemonSet部署日誌收集守護進程集 106

任務4.2.2 管理DaemonSet部署的集群守護進程集 109

任務4.3 運行一次性任務與定時任務 110

任務要求 110

相關知識 111

4.3.1 Job與一次性任務 111

4.3.2 CronJob與定時任務 111

任務實現 112

任務4.3.1 使用Job運行一次性任務 112

任務4.3.2 使用CronJob運行定時任務 114

項目小結 115

課後練習 116

項目實訓 116

實訓1 使用Deployment運行Apache服務 116

實訓2 使用DaemonSet在所有工作節點上部署nginx 117

項目5 發布應用程序 118

【課堂學習目標】 118

知識目標 118

技能目標 118

素養目標 119

任務5.1 使用Service發布應用程序 119

任務要求 119

相關知識 119

5.1.1 什麽是Service 119

5.1.2 通過Endpoints理解Service的工作機制 120

5.1.3 Service的負載均衡機制 123

5.1.4 Service的服務發現機制 125

5.1.5 定義Service 126

5.1.6 Service類型 126

5.1.7 無頭Service 128

5.1.8 多埠Service 129

任務實現 129

任務5.1.1 驗證Kubernetes的服務發現機制 129

任務5.1.2 使用Service對外發布集群中的應用程序 130

任務5.1.3 使用Service發布前後端應用程序 132

任務5.2 使用Ingress發布應用程序 136

任務要求 136

相關知識 137

5.2.1 什麽是Ingress 137

5.2.2 定義Ingress 138

5.2.3 什麽是Ingress控制器 138

任務實現 139

任務5.2.1 部署nginx Ingress控制器 139

任務5.2.2 使用Ingress對外發布應用程序 142

任務5.3 實現灰度發布與藍綠發布 146

任務要求 146

相關知識 146

5.3.1 什麽是灰度發布 146

5.3.2 什麽是藍綠發布 147

5.3.3 Kubernetes的灰度發布和藍綠發布解決方案 148

5.3.4 nginx Ingress的灰度發布和藍綠發布方法 148

任務實現 149

任務5.3.1 使用nginx Ingress實現灰度發布 149

任務5.3.2 使用nginx Ingress實現藍綠發布 154

項目小結 155

課後練習 156

項目實訓 157

實訓1 使用Service發布Apache服務並考察Service工作機制 157

實訓2 部署nginx Ingress控制器並使用Ingress發布Apache服務 157

項目6 管理存儲和配置信息 158

【課堂學習目標】 158

知識目標 158

技能目標 158

素養目標 159

任務6.1 配置和使用基本存儲 159

任務要求 159

相關知識 159

6.1.1 什麽是捲 159

6.1.2 捲的類型 159

任務實現 160

任務6.1.1 使用EmptyDir捲存儲數據 160

任務6.1.2 使用HostPath捲掛載宿主機文件 161

任務6.1.3 使用NFS捲掛載NFS共享目錄 163

任務6.2 配置和使用持久捲 165

任務要求 165

相關知識 165

6.2.1 PV與PVC的持久化存儲機制 165

6.2.2 PV的定義 166

6.2.3 PVC的定義 168

6.2.4 PV和PVC的生命周期 169

6.2.5 StorageClass 169

任務實現 172

任務6.2.1 創建基於NFS的PV 172

任務6.2.2 基於PVC使用PV 173

任務6.2.3 基於StorageClass實現動態捲制備 175

任務6.3 管理配置信息和敏感信息 180

任務要求 180

相關知識 180

6.3.1 什麽是ConfigMap 180

6.3.2 創建ConfigMap 180

6.3.3 使用ConfigMap 182

6.3.4 什麽是Secret 183

6.3.5 創建Secret 184

6.3.6 使用Secret 185

任務實現 186

任務6.3.1 使用ConfigMap為Tomcat提供配置文件 186

任務6.3.2 使用Secret為MongoDB提供配置文件 188

項目小結 189

課後練習 190

項目實訓 191

實訓1 通過PVC使用基於NFS的PV 191

實訓2 使用默認StorageClass基於NFS實現動態捲制備 191

項目7 Kubernetes調度 192

【課堂學習目標】 192

知識目標 192

技能目標 192

素養目標 192

任務7.1 使用StatefulSet運行有狀態應用程序 193

任務要求 193

相關知識 193

7.1.1 什麽是StatefulSet 193

7.1.2 StatefulSet的特點 194

7.1.3 StatefulSet的組件 194

任務實現 196

任務7.1.1 使用StatefulSet部署MySQL主從集群 196

任務7.1.2 擴縮容StatefulSet 203

任務7.2 實現水平自動擴縮容 204

任務要求 204

相關知識 204

7.2.1 什麽是HPA 204

7.2.2 如何定義HPA 205

7.2.3 什麽是Metrics Server 206

任務實現 207

任務7.2.1 部署Metrics Server 207

任務7.2.2 通過HPA實現nginx的自動擴縮容 209

任務7.3 管理Pod的調度 212

任務要求 212

相關知識 213

7.3.1 Kubernetes調度概述 213

7.3.2 Pod的定向調度 213

7.3.3 親和性與反親和性調度 214

7.3.4 污點與容忍度 217

任務實現 219

任務7.3.1 將應用程序部署在特定的節點上 219

任務7.3.2 將同一應用程序部署到不同的節點上 220

任務7.3.3 將關聯的應用程序部署到同一節點上 221

任務7.3.4 示範污點和容忍度的使用 223

項目小結 224

課後練習 225

項目實訓 226

實訓1 使用StatefulSet運行nginx並進行擴縮容 226

實訓2 演示通過污點和容忍度設置驅逐Pod 227

項目8 高效管理應用程序的部署 228

【課堂學習目標】 228

知識目標 228

技能目標 228

素養目標 228

任務8.1 使用Helm簡化應用程序的部署和管理 229

任務要求 229

相關知識 229

8.1.1 什麽是Helm 229

8.1.2 Helm是如何工作的 229

8.1.3 Chart結構 230

8.1.4 Helm的基本用法 231

任務實現 232

任務8.1.1 安裝和配置Helm 232

任務8.1.2 熟悉Helm的基本操作 233

任務8.1.3 使用Helm在Kubernetes中部署Kafka 238

任務8.2 使用Kustomize定製應用程序的部署配置 241

任務要求 241

相關知識 242

8.2.1 Kustomize的特性和應用場景 242

8.2.2 Kustomization文件 242

8.2.3 Kustomize的基本用法 244

任務實現 245

任務8.2.1 使用Kustomize管理Secret 245

任務8.2.2 為Kubernetes對象設置貫穿性字段 246

任務8.2.3 使用Kustomize組合Kubernetes資源 248

任務8.2.4 使用Kustomize定製Kubernetes資源 249

任務8.2.5 使用Kustomize管理不同環境的應用程序配置 251

項目小結 253

課後練習 254

項目實訓 254

實訓1 使用Helm在Kubernetes中部署MongoDB 254

實訓2 使用Kustomize管理不同環境的應用程序配置 255

項目9 持續集成和持續部署 256

【課堂學習目標】 256

知識目標 256

技能目標 256

素養目標 257

任務9.1 在Kubernetes中部署開發的應用程序 257

任務要求 257

相關知識 257

9.1.1 將應用程序部署到Kubernetes的基本流程 257

9.1.2 開源的企業級Docker Registry項目Harbor 258

任務實現 258

任務9.1.1 基於Harbor自建企業級Docker註冊中心 258

任務9.1.2 在Kubernetes集群中使用來自Harbor的鏡像 262

任務9.1.3 將開發的應用程序部署到Kubernetes 264

任務9.2 搭建雲原生應用程序的CI/CD平臺 268

任務要求 268

相關知識 269

9.2.1 DevOps的概念 269

9.2.2 CI/CD的概念 269

9.2.3 CI/CD的主要工具 270

9.2.4 CI/CD平臺的組建思路 270

任務實現 271

任務9.2.1 規劃CI/CD平臺 271

任務9.2.2 部署GitLab服務器 271

任務9.2.3 部署Jenkins服務器 275

任務9.2.4 通過Jenkins集中管理憑據 279

任務9.3 使用Jenkins的Maven項目實施CI/CD 281

任務要求 281

相關知識 281

9.3.1 Jenkins的項目類型 281

9.3.2 Maven項目的CI/CD流程 282

任務實現 282

任務9.3.1 準備Maven項目的實施環境 282

任務9.3.2 新建Maven項目實施CI/CD 284

任務9.3.3 通過GitLab自動觸發項目構建和部署 289

任務9.4 使用Jenkins的流水線項目實施CI/CD 292

任務要求 292

相關知識 293

9.4.1 Jenkins的流水線語法 293

9.4.2 在Jenkins中使用流水線 294

任務實現 294

任務9.4.1 新建流水線項目實施CI/CD 294

任務9.4.2 實施代碼分支的CI/CD 297

任務9.5 在Kubernetes中動態創建代理節點實施CI/CD 304

任務要求 304

相關知識 304

9.5.1 Jenkins的主節點和代理節點 304

9.5.2 在Kubernetes中使用Pod作為代理節點 305

任務實現 305

任務9.5.1 在Jenkins中配置Pod代理 305

任務9.5.2 新建Jenkins項目測試Pod代理的動態創建 309

項目小結 312

課後練習 313

項目實訓 314

實訓1 手動將Python應用程序部署到Kubernetes 314

實訓2 搭建雲原生應用程序的CI/CD平臺 315

實訓3 使用Jenkins的流水線項目實施CI/CD 315