Kubernetes 企業級雲原生運維實戰

李振良

  • 出版商: 清華大學
  • 出版日期: 2024-07-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • ISBN: 7302663513
  • ISBN-13: 9787302663515
  • 相關分類: Kubernetes
  • 下單後立即進貨 (約4週~6週)

  • Kubernetes 企業級雲原生運維實戰-preview-1
  • Kubernetes 企業級雲原生運維實戰-preview-2
  • Kubernetes 企業級雲原生運維實戰-preview-3
Kubernetes 企業級雲原生運維實戰-preview-1

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

相關主題

商品描述

"本書是一本實用性很強的Kubernetes運維實戰指南,旨在為容器雲平臺的建設、應用和運維過程提供全面的指導。作者結合豐富的生產環境經驗,深入探討作為一名Kubernetes工程師必備的核心技能,包括部署、存儲、網絡、安全、日誌、監控、CI/CD等方面的技術。本書結合大量的實際案例,深入解析各個知識點,幫助讀者更輕松地理解Kubernetes,並掌握在真實應用場景中的使用方法、技巧以及工作原理。通過學習本書,讀者可以熟練運用這些知識來構建高效、穩定、安全的企業級Kubernetes容器平臺,提高自身的運維能力和競爭力。 本書適用於雲計算工程師、運維工程師、DevOps工程師、開發工程師、測試工程師、架構師以及備考CKA認證人員,也適合作為高等院校電腦專業雲計算及容器技術方面的教材和教學參考書。"

目錄大綱

第1章  Kubernetes概述 1

1.1  容器技術概述 1

1.2  Kubernetes介紹 3

1.3  Kubernetes架構與組件 4

1.4  Kubernetes核心資源 5

1.5  本章小結 6

第2章  Kubernetes快速入門 7

2.1  Kubernetes集群部署 7

2.1.1  準備服務器環境 7

2.1.2  系統初始化配置 8

2.1.3  安裝Docker 10

2.1.4  安裝cri-docker 10

2.1.5  安裝kubeadm和kubelet 11

2.1.6  部署Master節點 12

2.1.7  部署Node節點 14

2.1.8  部署網絡插件 14

2.1.9  部署Dashboard 16

2.1.10  清空Kubernetes環境 18

2.2  部署第一個應用程序 18

2.2.1  通過Dashboard部署應用程序 18

2.2.2  通過kubectl命令行部署應用程序 20

2.2.3  通過定義資源文件部署應用程序 21

2.3  kubectl管理工具 23

2.3.1  kubectl子命令概要 23

2.3.2  kubectl工具常用操作 28

2.4  本章小結 30

第3章  Pod資源對象 31

3.1  Pod存在的意義 31

3.2  Pod實現原理 32

3.2.1  容器之間網絡通信 32

3.2.2  容器之間文件共享 35

3.3  Pod資源常見字段及值類型 37

3.4  Pod管理常用命令 38

3.5  容器運行命令與參數 39

3.5.1  command 39

3.5.2  args 40

3.6  鏡像拉取策略 40

3.7  聲明埠 41

3.8  容器健康檢查 42

3.8.1  存活探針 42

3.8.2  就緒探針 44

3.8.3  啟動探針 46

3.8.4  tcpSocket和exec檢查方法 47

3.9  容器資源配額 49

3.9.1  資源請求與資源限制 49

3.9.2  資源請求對Pod調度的影響 51

3.9.3  理想的資源配額是多少 52

3.9.4  服務質量 53

3.10  容器環境變量 55

3.11  初始化容器 56

3.12  容器生命周期回調 58

3.12.1  postStart 59

3.12.2  preStop 60

3.13  Pod生命周期 61

3.13.1  創建Pod 61

3.13.2  啟動Pod 62

3.13.3  銷毀Pod 62

3.14  本章小結 63

第4章  工作負載資源對象 64

4.1  工作負載資源概述 64

4.2  Deployment 64

4.2.1  獲取源代碼 65

4.2.2  構建鏡像 66

4.2.3  推送鏡像到鏡像倉庫 67

4.2.4  部署應用 68

4.2.5  應用升級 71

4.2.6  應用回滾 74

4.2.7  應用擴容與縮容 77

4.2.8  應用下線 77

4.2.9  實現灰度發布 77

4.3  DaemonSet 79

4.4  Job與CronJob 83

4.4.1  Job 83

4.4.2  ConJob 84

4.5  本章小結 86

第5章  Service資源對象 87

5.1  Service概述 87

5.2  Service定義 87

5.3  Service公開類型 90

5.3.1  ClusterIP 90

5.3.2  NodePort 91

5.3.3  LoadBalancer 93

5.3.4  ExternalName 94

5.4  Endpoints對象 95

5.5  Service服務發現 97

5.5.1  環境變量 97

5.5.2  DNS 97

5.6  Service代理模式 102

5.6.1  iptables 102

5.6.2  ipvs 104

5.7  生產環境架構 107

5.8  本章小結 108

第6章  Ingress資源對象 109

6.1  Ingress概述 109

6.2  Ingress控制器部署 110

6.3  Ingress對外公開HTTP服務 110

6.4  基於請求路徑轉發不同服務 113

6.5  Ingress配置HTTPS 114

6.6  Ingress自定義配置 115

6.6.1  增加代理超時時間 115

6.6.2  設置客戶端請求體大小 116

6.6.3  重定向 116

6.6.4  會話保持 117

6.6.5  自定義規則 117

6.7  Ingress灰度發布 118

6.7.1  基於權重的流量切分 119

6.7.2  基於客戶端請求的流量切分 124

6.7.3  常見發布策略總結 128

6.8  Ingress工作原理 128

6.9  生產環境架構 129

6.10  本章小結 131

第7章  Kubernetes存儲管理 132

7.1  捲 132

7.1.1  emptyDir 132

7.1.2  hostPath 134

7.1.3  nfs 136

7.1.4  容器存儲接口 139

7.2  持久捲 140

7.2.1  創建PV 141

7.2.2  創建PVC 142

7.2.3  Pod使用PVC 143

7.2.4  PV動態供給 144

7.2.5  PV生命周期 148

7.3  內置存儲對象 149

7.3.1  ConfigMap 149

7.3.2  Secret 153

7.3.3  配置文件自動重新加載方案 156

7.4  本章小結 156

第8章  有狀態應用管理 157

8.1  StatefulSet工作負載資源 157

8.1.1  穩定的網絡標識符 157

8.1.2  穩定的獨享存儲 160

8.2  MySQL主從復制集群實踐 162

8.2.1  MySQL集群拓撲規劃 162

8.2.2  MySQL集群容器化實現 163

8.2.3  MySQL Slave擴展與縮減 167

8.2.4  MySQL版本升級與回滾 170

8.3  Operator 170

8.3.1  Operator介紹 170

8.3.2  自定義資源定義 171

8.3.3  控制器 173

8.3.4  MySQL Operator 174

8.4  本章小結 178

第9章  Kubernetes調度管理 179

9.1  節點選擇器 179

9.2  節點親和性 180

9.3  Pod親和性和反親和性 184

9.3.1  親和性 184

9.3.2  反親和性 186

9.4  污點與容忍 187

9.4.1  污點 187

9.4.2  容忍 188

9.5  nodeName 190

9.6  本章小結 190

第10章  Kubernetes安全配置 192

10.1  Kubernetes API訪問控制 192

10.1.1  Kubernetes安全框架 192

10.1.2  RBAC介紹 193

10.1.3  面向用戶授權案例1 195

10.1.4  面向用戶授權案例2 202

10.1.5  內置集群角色 204

10.1.6  面向應用程序授權案例 204

10.2  Pod安全上下文 207

10.2.1  容器以普通用戶運行 208

10.2.2  容器啟用特權 209

10.2.3  容器設置只讀文件系統 210

10.3  網絡策略 210

10.3.1  網絡策略實現 210

10.3.2  網絡策略資源 211

10.3.3  默認策略 212

10.3.4  Pod級別限制 213

10.3.5  命名空間級別限制 214

10.3.6  細粒度限制 215

10.3.7  IP段限制 216

10.3.8  出站流量限制 217

10.4  本章小結 218

第11章  Kubernetes網絡插件之

Calico 219

11.1  Docker網絡模型 219

11.1.1  容器之間以及容器與宿主機

之間的通信 219

11.1.2  容器訪問外部網絡 221

11.1.3  外部網絡訪問容器 221

11.2  Kubernetes網絡模型 222

11.3  Calico介紹 224

11.4  Calico部署 226

11.5  calicoctl管理工具 226

11.6  Calico工作模式 227

11.6.1  覆蓋網絡:VXLAN模式 229

11.6.2  覆蓋網絡:IPIP模式 233

11.6.3  路由網絡:BGP模式 235

11.6.4  工作模式優缺點 236

11.7  路由反射器 237

11.8  本章小結 240

第12章  Kubernetes部署利器

Helm 241

12.1  Helm介紹 241

12.2  Helm安裝 241

12.3  Helm命令概述 242

12.4  Helm基本使用 243

12.4.1  製作Chart 243

12.4.2  安裝Chart 246

12.4.3  更新Release 248

12.4.4  回滾Release 249

12.4.5  卸載Release 249

12.5  深入理解Chart模板 249

12.5.1  縮進函數 250

12.5.2  toYaml函數 250

12.5.3  條件判斷 251

12.5.4  循環 252

12.5.5  變量作用域 253

12.5.6  讀取文件 254

12.5.7  自定義模板 255

12.6  自建Chart倉庫 257

12.6.1  搭建Chart倉庫服務器 257

12.6.2  推送本地Chart到遠程倉庫 257

12.6.3  通過遠程倉庫安裝Chart 258

12.7  公共Chart倉庫 258

12.7.1  部署MySQL集群 259

12.7.2  部署Redis集群 262

12.8  本章小結 263

第13章  基於Jenkins的CI/CD

平臺 265

13.1  CI/CD簡介 265

13.1.1  持續集成 265

13.1.2  持續交付和持續部署 266

13.2  CI/CD流程設計 267

13.3  相關軟件環境準備 267

13.3.1  部署GitLab代碼倉庫 268

13.3.2  部署Harbor鏡像倉庫 269

13.3.3  部署Jenkins發布系統 271

13.4  Jenkins初體驗 275

13.4.1  流程設計 275

13.4.2  提交代碼 275

13.4.3  創建項目 278

13.4.4  項目配置 278

13.4.5  驗證與測試 281

13.5  Jenkins參數化構建 283

13.6  Jenkins主從架構 284

13.7  Jenkins Pipeline 287

13.7.1  Pipeline語法 287

13.7.2  基於Kubernetes動態創建代理 288

13.7.3  常用指令 292

13.7.4  片段生成器 296

13.8  案例:Pipeline實現網站項目的

自動發布 297

13.8.1  Pipeline腳本基本結構 297

13.8.2  拉取代碼階段 299

13.8.3  代碼編譯階段 302

13.8.4  構建鏡像階段 303

13.8.5  部署到K8s集群階段 306

13.8.6  反饋階段 309

13.8.7  驗證與測試 311

13.9  Argo CD增強持續交付 316

13.9.1  Argo CD部署 317

13.9.2  Argo CD實踐 319

13.10  本章小結 323

第14章  基於Prometheus+Grafana的

監控平臺 324

14.1  Prometheus和Grafana簡介 324

14.2  Prometheus架構 324

14.3  部署Prometheus和Grafana 326

14.3.1  部署Prometheus 326

14.3.2  部署Grafana 327

14.3.3  在Grafana中添加Prometheus作為

數據源 328

14.4  Prometheus監控案例 329

14.4.1  監控Linux服務器 329

14.4.2  監控Docker服務器 332

14.4.3  監控MySQL服務器 334

14.4.4  監控應用程序 336

14.5  Alertmanager告警通知 342

14.5.1  部署Alertmanager 342

14.5.2  Prometheus指向Alertmanager 344

14.5.3  定義告警規則 344

14.5.4  企業微信告警通知 349

14.5.5  自定義告警內容模板 351

14.6  Prometheus監控Kubernetes 353

14.6.1  Prometheus服務發現簡介 353

14.6.2  Kubernetes關註的指標 354

14.6.3  在Kubernetes中搭建Prometheus

監控系統 355

14.6.4  監控Node 356

14.6.5  監控Pod 363

14.6.6  監控資源對象 366

14.6.7  監控Service和Ingress對象 368

14.6.8  監控集群中應用程序 371

14.6.9  監控Kubernetes組件 374

14.7  本章小結 383

第15章  基於ELK Stack的日誌管理

平臺 384

15.1  ELK Stack簡介 384

15.2  部署Elasticsearch和Kibana 386

15.3  Nginx日誌收集案例 387

15.3.1  部署Filebeat 387

15.3.2  Kibana查看索引 388

15.3.3  創建數據視圖 389

15.4  數據處理管道Logstash 391

 

15.4.1  部署Logstash 391

15.4.2  定義數據處理規則 393

15.4.3  配置Filebeat發送到Logstash 395

15.5  Kibana儀表板 396

15.5.1  PV統計 397

15.5.2  PV趨勢圖 398

15.5.3  客戶端IP TOP10 399

15.5.4  URI TOP10 401

15.5.5  HTTP狀態碼分佈 401

 

 

 

15.6  收集Kubernetes集群中的應用

日誌 403

15.6.1  如何收集這些日誌 403

15.6.2  在Kubernetes中搭建ELK 

日誌系統 404

15.6.3  收集Pod日誌 405

15.6.4  收集Pod中的日誌文件 410

15.7  本章小結 415