






nx服务 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.1Dockerfile语法详解 29
2.2Dockerfile构建企业级镜像 43
2.2.1案例:Dockerfile构建Nginx镜像 43
2.2.2案例:Dockerfile构建Tomcat镜像 48
2.3本章小结 50
第3章Docker私有镜像仓库Harbor 51
3.1Harbor的概念及证书签发 51
3.2安装Harbor 53
3.3Harbor图形界面使用说明 57
3.4测试使用Harbor私有镜像仓库 59
3.5Harbor高可用 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.2Kubeadm初始化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.2Calico的配置 89
4.4.3calico-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.1Pod是什么 100
5.1.1Pod基本介绍 100
5.1.2Pod如何管理多个容器 101
5.1.3Pod网络 102
5.1.4Pod存储 102
5.2Pod的工作方式 103
5.2.1自主式Pod 103
5.2.2控制器管理的Pod 107
5.3如何创建一个Pod资源 111
5.3.1通过YAML文件创建Pod资源 112
5.3.2Pod资源清单编写技巧 113
5.3.3创建一个完整的Pod资源 141
5.3.4和Pod相关的命令解读 144
5.4nodeName和nodeSelector 146
5.4.1nodeName实例 147
5.4.2nodeSelector实例 148
5.5亲和性、污点和容忍度 149
5.5.1节点亲和性 149
5.5.2Pod亲和性和反亲和性 154
5.5.3污点和容忍度 160
5.6Pod生命周期和健康探测 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.1ReplicaSet如何管理Pod 176
6.1.1ReplicaSet概述 176
6.1.2ReplicaSet资源清单文件的编写技巧 176
6.2ReplicaSet管理Pod案例:部署Guestbook留言板 178
6.3ReplicaSet管理Pod实例:扩容、缩容、更新 180
6.4Deployment如何管理Pod 183
6.4.1Deployment概述 183
6.4.2Deployment如何管理ReplicaSet和Pod 184
6.5Deployment资源清单文件的编写技巧 185
6.5.1查看Deployment资源对象YAML文件的组成 186
6.5.2查看Deployment下的spec字段 186
6.6Deployment管理Pod案例解析 188
6.7Deployment管理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.1Service的概念与原理 197
7.1.1Service基本介绍 197
7.1.2Kubernetes集群中的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.4Service的4种Type类型 203
7.2.5Service的端口定义 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.1Kubernetes支持的持久化存储类型 216
8.1.1Kubernetes持久化存储:emptyDir案例 218
8.1.2Kubernetes持久化存储:hostPath案例 218
8.1.3Kubernetes持久化存储:NFS案例 219
8.2Kubernetes持久化存储:PV和PVC 221
8.2.1PV和PVC概述 221
8.2.2创建Pod,使用PVC作为持久化存储卷 225
8.3Kubernetes存储类:StorageClass 228
8.4本章小结 231
第9章Kubernetes控制器:StatefulSet 232
9.1StatefulSet控制器的概念和原理 233
9.1.1为什么使用HeadlessService 233
9.1.2为什么使用volumeClaimTemplate 233
9.2StatefulSet资源清单文件的编写技巧 235
9.2.1定义API版本和资源类型 235
9.2.2定义StatefulSet的spec字段 235
9.2.3定义Pod模板 236
9.3StatefulSet使用案例:部署Web站点 236
9.3.1创建存储类 236
9.3.2创建StatefulSet资源 237
9.3.3查看StatefulSet是否创建成功 238
9.3.4查看StatefulSet管理的Pod 238
9.4StatefulSet管理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.1DaemonSet如何管理Pod 242
10.2DaemonSet资源创建方法 242
10.2.1DaemonSet资源清单的定义方法 242
10.2.2DaemonSet使用案例:部署日志收集组件Fluentd 244
10.2.3DaemonSet管理Pod:滚动更新 247
10.3本章小结 248
第11章配置管理中心ConfigMap和Secret 250
11.1ConfigMap概述 251
11.2ConfigMap的创建方法 251
11.3案例:使用ConfigMap维护Pod中容器的配置信息 253
11.3.1通过环境变量引入:configMapKeyRef 253
11.3.2通过环境变量引入:使用envfrom 255
11.3.3把ConfigMap做成Volume,挂载到Pod 256
11.4Secret基本介绍及使用案例 257
11.5本章小结 259
第12章Ingress和IngressController 260
12.1Ingress和IngressController基本介绍和安装 260
12.1.1使用IngressController代理Kubernetes内部Pod的流程 260
12.1.2安装IngressController 262
12.2案例:测试IngressHTTP代理Tomcat 262
12.3本章小结 266
第13章搭建Prometheus+Grafana监控平台 267
13.1Prometheus基本介绍 267
13.1.1Prometheus的特点 268
13.1.2Prometheus生态系统常用组件介绍 269
13.1.3Prometheus采集数据流程 270
13.1.4Prometheus查询语言PromQL 271
13.2安装和配置Prometheus 273
13.2.1安装和配置Prometheus 273
13.2.2监控利器Node-Exporter 283
13.3可视化UI界面Grafana的安装和配置 287
13.3.1Grafana介绍 287
13.3.2安装Grafana 287
13.3.3Grafana界面接入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.1Kubernetes助力DevOps企业落地实践 309
14.1.1DevOps的基本概念 309
14.1.2Kubernetes在DevOps中的核心作用 311
14.1.3在Kubernetes集群安装和配置Jenkins 312
14.1.4案例:使用Jenkins将代码自动化部署到Kubernetes集群 328
14.2JenkinsPipeline语法介绍 335
14.2.1JenkinsPipeline介绍 335
14.2.2为什么用JenkinsPipeline 335
14.2.3JenkinsPipeline声明式语法 335
14.2.4JenkinsPipeline脚本式语法 344
14.3本章小结 346
第15章新一代服务网格Istio结合Kubernetes实现流量治理 347
15.1认识Istio服务网格 347
15.1.1Istio服务网格概述 347
15.1.2Istio的核心特性 348
15.1.3Istio的架构与功能 350
15.2Istio组件详解 353
15.2.1Pilot 353
15.2.2Envoy 354
15.2.3Citadel 355
15.2.4Galley 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.6Istio流量治理实例 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.1MetricsServer在自动扩缩容中的核心作用 393
16.1.1MetricsServer的部署方式 394
16.1.2MetricsServer的具体应用 399
16.2水平Pod自动扩缩容HPA 400
16.2.1HPA基本介绍 400
16.2.2HPA设置和使用案例 400
16.3垂直Pod自动扩缩容VPA 403
16.3.1VPA基本介绍 403
16.3.2VPA设置和使用案例 404
16.4本章小结 408
第17章基于Kubernetes搭建高吞吐量的日志收集平台 409
17.1常见的日志收集方案对比分析 409
17.2EFK案例分享——组件部署 411
17.2.1步骤一:部署Elasticsearch 411
17.2.2步骤二:部署Fluentd服务 414
17.2.3步骤三:部署Kibana服务 417
17.2.4步骤四:验证 419
17.3ELK案例分享——步骤说明 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.4EFK+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.1K3s应用领域 442
19.1.1边缘计算 442
19.1.2嵌入式设备 443
19.1.3云原生领域 444
19.1.4多云管理 444
19.2K3s实战案例分享 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.1Tekton基本介绍和案例演示 449
20.1.1Tekton概述 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