[套装书]Kubernetes进阶实战(第2版)+Docker+Kubernetes应用开发与快速上云(2册)

作者
马永亮 李文强
丛书名
云计算与虚拟化技术丛书
出版社
机械工业出版社
ISBN
9782102101141
简要
简介
内容简介书籍计算机书籍 ---------------------------Kubernetes进阶实战(第2版)--------------------------- 全书分为5个部分。第一部分介绍Kubernetes系统基础架构及核心概述,并提供一个Kubernetes快速部署和应用的入门指南。第二部分剖析分Kubernetes系统的应用编排核心组件,对Pod、Controller、Service和Ingress、存储卷和应用配置等进行深入介绍。第三部分介绍安全相关的话题,主要涉及认证、授权、准入控制、网络模型和网络策略等话题。第四部分介绍Kubernetes系统高级话题及系统扩展,包括调度策略、CRD和Operator、资源指标与系统监控及应用管理器等。第五部分介绍基于Kubernetes的服务治理与服务网络,涉及数据平面组件Envoy、Istio架构、部署和应用案例等话题。 ---------------------------Docker+Kubernetes应用开发与快速上云--------------------------- Docker是目前最流行的容器技术之一,Kubernetes(简称k8s)是目前最流行的容器编排平台之一,本书主要围绕Docker和k8s进行讲解。 本书共分为11章。前7章主要讲解Docker相关内容,从发展简史到基础概念,从市场趋势、应用场景到各环境的安装,从基础操作命令到Docker应用持续开发的工作流程,从主流的编程语言实践到数据库容器化。第8~10章主要讲解Kubernetes的相关内容,从主体架构、核心概念到开发、生产环境搭建以及集群故障处理,从应用部署、伸缩、回滚到应用访问,从云端理念到将应用部署到容器云服务。第11章主要讲解容器化之后的DevOps实践,从DevOps的理念到CI、CD的流程和实践,最后讲述如何使用Azure DevOps、Tencent Hub以及自建的TeamCity来完成CI/CD,并附有相关参考流程讲解。
目录



---------------------------Kubernetes进阶实战(第2版)---------------------------


前言
第一部分 系统基础
第1章 Kubernetes系统基础2
1.1 容器与容器编排系统3
1.1.1 Docker容器技术3
1.1.2 OCI与容器运行时5
1.1.3 为什么需要容器编排系统7
1.2 Kubernetes基础8
1.2.1 Kubernetes集群概述9
1.2.2 Kubernetes集群架构11
1.3 应用的运行与互联互通14
1.3.1 Pod与Service15
1.3.2 Pod控制器16
1.3.3 Kubernetes网络基础18
1.3.4 部署并访问应用20
1.4 简析Kubernetes生态系统21
1.5 本章小结23
第2章 Kubernetes快速入门24
2.1 利用kubeadm部署Kubernetes集群24
2.1.1 kubeadm部署工具25
2.1.2 集群组件运行模式26
2.1.3 kubeadm init工作流程28
2.1.4 kubeadm join工作流程31
2.1.5 kubeadm配置文件33
2.2 部署分布式Kubernetes集群34
2.2.1 准备基础环境34
2.2.2 单控制平面集群38
2.3 kubectl命令与资源管理43
2.3.1 资源管理的操作44
2.3.2 kubectl的命令格式45
2.3.3 kubectl命令常用操作示例47
2.3.4 kubectl插件50
2.4 命令式应用编排52
2.4.1 应用编排53
2.4.2 部署Service对象56
2.4.3 扩容与缩容58
2.4.4 修改与删除对象60
2.5 本章小结61
第二部分 核心资源
第3章 Kubernetes资源管理64
3.1 资源对象与API群组64
3.1.1 Kubernetes的资源对象65
3.1.2 资源及其在API中的组织形式68
3.1.3 访问Kubernetes RESTful API70
3.2 对象类资源配置规范72
3.2.1 定义资源对象73
3.2.2 对象元数据74
3.2.3 资源的期望状态75
3.2.4 获取资源配置清单格式文档75
3.2.5 资源对象管理方式77
3.3 名称空间79
3.3.1 名称空间的作用80
3.3.2 管理Namespace资源81
3.4 节点资源86
3.4.1 节点心跳与节点租约86
3.4.2 节点状态87
3.4.3 手动管理Node资源与节点89
3.5 标签与标签选择器91
3.5.1 资源标签91
3.5.2 标签选择器93
3.6 资源注解94
3.7 本章小结96
第4章 应用部署、运行与管理97
4.1 应用容器与Pod资源97
4.1.1 Pod资源基础97
4.1.2 容器设计模式99
4.1.3 Pod的生命周期104
4.2 在Pod中运行应用105
4.2.1 使用单容器Pod资源106
4.2.2 获取Pod与容器状态详情107
4.2.3 自定义容器应用与参数110
4.2.4 容器环境变量111
4.2.5 Pod的创建与删除过程112
4.3 暴露容器服务115
4.3.1 其他容器端口映射115
4.3.2 配置Pod使用节点网络117
4.4 容器安全上下文118
4.4.1 配置格式速览119
4.4.2 管理容器进程的运行身份120
4.4.3 管理容器的内核功能121
4.4.4 特权模式容器123
4.4.5 在Pod上使用sysctl124
4.5 容器应用的管理接口125
4.5.1 健康状态监测接口126
4.5.2 容器存活状态检测127
4.5.3 Pod的重启策略133
4.5.4 容器就绪状态检测133
4.5.5 容器生命周期135
4.6 多容器Pod138
4.6.1 初始化容器138
4.6.2 Sidecar容器140
4.7 资源需求与资源限制142
4.7.1 资源需求与限制142
4.7.2 容器资源需求143
4.7.3 容器资源限制145
4.7.4 容器可见资源146
4.7.5 Pod服务质量类别147
4.8 综合应用案例149
4.9 本章小结150
第5章 存储卷与数据持久化152
5.1 存储卷基础152
5.1.1 存储卷概述152
5.1.2 配置Pod存储卷154
5.2 临时存储卷156
5.2.1 emptyDir存储卷156
5.2.2 gitRepo存储卷158
5.3 hostPath存储卷159
5.4 网络存储卷161
5.4.1 NFS存储卷162
5.4.2 RBD存储卷164
5.4.3 CephFS存储卷167
5.4.4 GlusterFS存储卷169
5.5 持久存储卷171
5.5.1 PV与PVC基础172
5.5.2 PV的生命周期173
5.5.3 静态PV资源175
5.5.4 PVC资源178
5.5.5 在Pod中使用PVC181
5.5.6 存储类181
5.6 容器存储接口CSI187
5.6.1 CSI基础187
5.6.2 Longhorn存储系统189
5.7 本章小结194
第6章 应用配置195
6.1 容器化应用配置195
6.1.1 容器化应用配置的常见方式195
6.1.2 容器环境变量197
6.2 应用程序配置管理与ConfigMap资源199
6.2.1 创建ConfigMap对象200
6.2.2 通过环境变量引用ConfigMap键值203
6.2.3 ConfigMap存储卷206
6.2.4 容器应用重载新配置211
6.3 Secret资源:向容器注入配置信息213
6.3.1 创建Secret资源213
6.3.2 使用Secret资源219
6.4 应用Downward API存储卷配置信息223
6.4.1 环境变量式元数据注入223
6.4.2 存储卷式元数据注入226
6.5 本章小结228
第7章 Service与服务发现229
7.1 Service资源及其实现模型229
7.1.1 Service资源概述229
7.1.2 kube-proxy代理模型230
7.1.3 Service资源类型233
7.2 应用Service资源235
7.2.1 应用ClusterIP Service资源236
7.2.2 应用NodePort Service资源238
7.2.3 应用LoadBalancer Service资源240
7.2.4 外部IP241
7.3 Service与Endpoint资源242
7.3.1 Endpoint与容器探针243
7.3.2 自定义Endpoint资源245
7.4 深入理解Service资源247
7.4.1 iptables代理模型247
7.4.2 ipvs代理模型255
7.5 Kubernetes服务发现258
7.5.1 服务发现概述258
7.5.2 基于环境变量的服务发现259
7.5.3 基于DNS的服务发现260
7.5.4 Pod的DNS解析策略与配置263
7.5.5 配置CoreDNS264
7.6 Headless Service资源解析266
7.6.1 ExternalName Service266
7.6.2 Headless Service267
7.7 本章小结270
第8章 应用编排与管理271
8.1 Kubernetes控制器基础271
8.1.1 控制器与Pod资源272
8.1.2 Pod模板资源275
8.2 ReplicaSet控制器276
8.2.1 功能分析276
8.2.2 ReplicaSet基础应用277
8.2.3 应用更新与回滚280
8.2.4 应用扩容与缩容285
8.2.5 高级更新策略286
8.3 Deployment控制器291
8.3.1 Deployment基础应用291
8.3.2 Deployment更新策略294
8.3.3 应用更新与回滚296
8.3.4 金丝雀发布298
8.4 StatefulSet控制器300
8.4.1 功能分析300
8.4.2 StatefulSet基础应用302
8.4.3 扩缩容与滚动更新306
8.4.4 StatefulSet的局限性309
8.5 DaemonSet控制器310
8.5.1 DaemonSet资源基础应用311
8.5.2 DaemonSet更新策略313
8.6 Job控制器314
8.6.1 Job资源基础应用315
8.6.2 并行式Job与扩容机制318
8.7 CronJob控制器319
8.8 Pod中断预算321
8.9 本章小结324
第三部分 安全
第9章 认证、授权与准入控制326
9.1 Kubernetes访问控制326
9.1.1 用户账户与用户组327
9.1.2 认证、授权与准入控制基础328
9.1.3 测试使用API Server的访问控制机制332
9.2 ServiceAccount及认证336
9.2.1 ServiceAccount自动化336
9.2.2 ServiceAccount基础应用338
9.2.3 Pod资源上的服务账户340
9.3 X509数字证书认证342
9.3.1 Kubernetes的X509数字证书认证体系343
9.3.2 TLS Bootstrapping机制347
9.4 kubeconfig配置文件348
9.4.1 kubeconfig文件格式348
9.4.2 自定义kubeconfig文件350
9.4.3 X509数字证书身份凭据353
9.4.4 多kubeconfig文件与合并354
9.5 基于角色的访问控制:RBAC355
9.5.1 RBAC授权模型356
9.5.2 Role与ClusterRole358
9.5.3 RoleBinding与ClusterRole-Binding361
9.5.4 聚合型ClusterRole364
9.5.5 面向用户的内置ClusterRole366
9.6 认证与权限应用案例:Dashboard368
9.6.1 部署Dashboard368
9.6.2 认证与授权370
9.7 准入控制器372
9.7.1 准入控制器概述372
9.7.2 LimitRange373
9.7.3 ResourceQuota377
9.7.4 PodSecurityPolicy379
9.8 本章小结386
第10章 网络模型与网络策略387
10.1 容器网络模型387
10.1.1 容器网络通信模式387
10.1.2 CNI网络插件基础391
10.1.3 Overlay网络模型394
10.1.4 Underlay网络模型396
10.1.5 配置CNI插件400
10.1.6 CNI插件与选型404
10.2 Flannel网络插件406
10.2.1 Flannel配置基础406
10.2.2 VXLAN后端408
10.2.3 直接路由412
10.2.4 host-gw后端414
10.3 Calico网络插件416
10.3.1 Calico架构417
10.3.2 Calico配置基础419
10.3.3 IPIP隧道网络421
10.3.4 客户端工具calicoctl424
10.3.5 BGP网络与BGP Reflector426
10.4 网络策略430
10.4.1 网络策略与配置基础431
10.4.2 管控入站流量433
10.4.3 管控出站流量436
10.4.4 隔离名称空间438
10.4.5 Calico的网络策略439
10.5 本章小结441
第四部分 进阶
第11章 Pod资源调度444
11.1  Kubernetes调度器444
11.1.1 调度器基础445
11.1.2 经典调度策略449
11.1.3 调度器插件454
11.1.4 配置调度器456
11.2 节点亲和调度461
11.2.1 Pod节点选择器462
11.2.2 强制节点亲和463
11.2.3 首选节点亲和465
11.3 Pod亲和调度467
11.3.1 位置拓扑468
11.3.2 Pod间的强制亲和469
11.3.3 Pod间的首选亲和471
11.3.4 Pod间的反亲和关系473
11.4 节点污点与Pod容忍度475
11.4.1 污点与容忍度基础概念475
11.4.2 定义污点477
11.4.3 定义容忍度478
11.4.4 问题节点标识479
11.5 拓扑分布式调度480
11.6 Pod优先级与抢占481
11.7 本章小结483
第12章 Kubernetes系统扩展484
12.1 CRD484
12.1.1 CRD 基础应用485
12.1.2 打印字段与资源类别488
12.1.3 CRD子资源489
12.1.4 CRD v1beta1版本491
12.2 自定义API Server492
12.2.1 自定义API Server运行机制493
12.2.2 APIService资源与应用494
12.3 控制器与Operator496
12.3.1 自定义控制器的工作机制496
12.3.2 Operator与简单应用示例500
12.4 Kubernetes集群高可用503
12.4.1 etcd高可用与控制平面拓扑503
12.4.2 Controller Manager与Scheduler高可用505
12.4.3 部署高可用控制平面506
12.5 本章小结508
第13章 Ingress与服务发布509
13.1  Ingress资源509
13.1.1 Ingress与Ingress控制器流量转发509
13.1.2 Ingress资源规范511
13.1.3 Ingress资源类型515
13.2 Ingress控制器部署与应用517
13.2.1 Ingress Nginx部署与测试518
13.2.2 配置Ingress Nginx522
13.2.3 Ingress资源案例:发布Dashboard524
13.3 Contour控制器525
13.3.1 Envoy数据平面525
13.3.2 部署Contour529
13.3.3 HTTPProxy基础532
13.3.4 HTTPProxy高级路由533
13.3.5 HTTPProxy服务韧性539
13.3.6 TCP代理542
13.4 本章小结544
第五部分 必备生态组件
第14章 应用管理546
14.1 Kustomize声明式应用管理546
14.1.1 声明式应用管理基本用法547
14.1.2 应用配置分解549
14.1.3 配置生成器551
14.1.4 资源补丁553
14.2 Helm基础应用556
14.2.1 Helm基础556
14.2.2 Helm 3 快速入门558
14.3 Helm Chart562
14.3.1 Chart包结构与描述文件562
14.3.2 Chart中的依赖关系564
14.3.3 模板与值565
14.3.4 其他需要说明的话题567
14.3.5 自定义Chart简单示例568
14.4 Helm实践:部署Harbor注册中心575
14.4.1 部署方案与配置方式577
14.4.2 Harbor部署与测试582
14.5 本章小结585
第15章 资源指标与集群监控586
15.1 资源监控与资源指标586
15.1.1 资源监控与Heapster587
15.1.2 新一代监控体系与指标系统589
15.2 资源指标与应用591
15.2.1 部署Metrics Server591
15.2.2 显示资源使用信息595
15.3 自定义指标与Prometheus596
15.3.1 Prometheus基础597
15.3.2 Prometheus核心概念601
15.3.3 Prometheus查询语言604
15.3.4 监控Kubernetes606
15.3.5 自定义指标适配器616
15.4 自动弹性缩放621
15.4.1 HPA控制器概述622
15.4.2 HPA v1控制器622
15.4.3 HPA v2控制器624
15.5 本章小结629
第16章 集群日志系统630
16.1 集群日志系统基础630
16.1.1 日志系统概述631
16.1.2 Elasticsearch基础633
16.2 EFK日志管理系统636
16.2.1 Elasticsearch集群637
16.2.2 日志采集器Fluent Bit642
16.2.3 可视化组件Kibana647
16.3 本章小结650



---------------------------Docker+Kubernetes应用开发与快速上云---------------------------


前言
第1章 走进Docker 1
1.1 主流的互联网公司均在使用Docker 1
1.2 什么是Docker 4
1.3 容器简史 4
1.4 打消偏见,迎接Docker 5
1.5 Docker和虚拟机 6
1.6 Docker的三个基本概念 8
1.6.1 镜像:一个特殊的文件系统 8
1.6.2 容器:镜像运行时的实体 9
1.6.3 仓库:集中存放镜像文件的地方 9
1.7 Docker版本概述 11
第2章 Docker的市场趋势和主要应用场景 12
2.1 Docker的市场趋势 12
2.2 Docker的主要应用场景 15
2.2.1 简化配置,无须处理复杂的环境依赖关系 15
2.2.2 搭建轻量、私有的PaaS环境、标准化开发、测试和生产环境 15
2.2.3 简化和标准化代码流水线,助力敏捷开发和DevOps实践 16
2.2.4 隔离应用 17
2.2.5 整合服务器资源 17
2.2.6 现代应用 17
2.2.7 调试能力 18
2.2.8 快速部署 18
2.2.9 混合云应用、跨环境应用、可移植应用 18
2.2.10 物联网和边缘计算 18
第3章 安装和运行 20
3.1 Windows 10下的安装 20
3.1.1 配置Docker本地环境 22
3.1.2 运行一个简单的demo 23
3.2 Ubuntu下的安装 25
3.2.1 了解Ubuntu 25
3.2.2 使用Hyper-V快速安装Ubuntu 25
3.2.3 配置外网 27
3.2.4 使用SSH远程Ubuntu 30
3.2.5 安装Docker 33
3.3 CentOS 下的安装 37
3.3.1 了解CentOS 37
3.3.2 使用CentOS 7 安装Docker 38
3.4 基于树莓派搭建个人网盘 41
3.4.1 什么是树莓派 41
3.4.2 开启SSH 43
3.4.3 安装Docker 44
3.4.4 基于树莓派的一行命令搭建个人网盘 46
第4章 Docker命令基础知识 48
4.1 登 录 49
4.1.1 OPTIONS说明 49
4.1.2 登录Docker Hub 49
4.1.3 登录到腾讯云镜像仓库 50
4.2 拉取镜像 51
4.2.1 OPTIONS说明 51
4.2.2 从Docker Hub拉取镜像 51
4.2.3 从腾讯云镜像仓库拉取镜像 52
4.3 列出本地镜像 53
4.3.1 OPTIONS说明 53
4.3.2 按名称和标签列出镜像 54
4.3.3 筛选 55
4.4 运行镜像 58
4.4.1 OPTIONS说明 58
4.4.2 简单运行 60
4.5 列出容器 61
4.5.1 OPTIONS说明 61
4.5.2 查看正在运行的容器 61
4.5.3 显示正在运行和已停止的容器 61
4.5.4 筛选 62
4.5.5 根据指定模板输出 62
4.6 查看镜像详情 63
4.7 删除镜像 64
4.7.1 OPTIONS说明 64
4.7.2 批量删除 65
4.8 清理未使用的镜像 65
4.9 磁盘占用分析 67
4.10 删除容器 68
4.10.1 OPTIONS说明 68
4.10.2 停止容器再删除 68
4.10.3 强制删除正在运行的容器 69
4.10.4 删除所有已停止的容器 69
4.11 镜像构建 70
4.11.1 OPTIONS说明 70
4.11.2 简单构建 71
4.12 镜像历史 73
4.12.1 OPTIONS说明 73
4.12.2 查看镜像历史 74
4.12.3 格式化输出 74
4.13 修改镜像名称和标签 75
4.14 镜像推送 76
4.14.1 推送到Docker Hub 76
4.14.2 推送到腾讯云镜像仓库 77
4.15 使用Kitematic来管理Docker容器 77
第5章 Docker持续开发工作流 81
5.1 基于Docker容器的内部循环开发工作流 81
5.1.1 开发 82
5.1.2 编写Dockerfile 83
5.1.3 创建自定义镜像 90
5.1.4 定义docker-compose 91
5.1.5 启动Docker应用 97
5.1.6 测试 99
5.1.7 部署或继续开发 100
5.2 Visual Studio和Docker 100
5.2.1 使用VS自动生成工程的Dockerfile文件 101
5.2.2 VS支持的容器业务协调程序 102
5.2.3 使用VS发布镜像 104
5.3 使用 Visual Studio Code玩转Docker 105
5.3.1 官方扩展插件Docker 105
5.3.2 Docker Compose扩展插件 109
第6章 Docker应用开发之旅 111
6.1 使用.NET Core开发云原生应用 111
6.1.1 什么是“云原生” 112
6.1.2 .NET Core简介 112
6.1.3 官方镜像 114
6.1.4 Kestrel 115
6.1.5 按环境加载配置 118
6.1.6 查看和设置容器的环境变量 119
6.1.7 ASP.NET Core内置的日志记录提供程序 121
6.1.8 编写一个简单的Demo输出日志 122
6.1.9 使用“docker logs”查看容器日志 124
6.1.10 使用“docker stats”查看容器资源使用 125
6.1.11 如何解决容器应用的时区问题 125
6.2 使用Docker搭建Java开发环境 127
6.2.1 官方镜像 127
6.2.2 使用Docker搭建Java开发环境 127
6.2.3 Docker资源限制 130
6.2.4 防止Java容器应用被杀 130
6.3 使用Go推送钉钉消息 131
6.3.1 Go的优势 131
6.3.2 官方镜像 132
6.3.3 使用Go推送钉钉消息 133
6.4 使用Python实现简单爬虫 140
6.4.1 关于Python 140
6.4.2 官方镜像 140
6.4.3 使用Python抓取博客列表 141
6.5 使用PHP搭建个人博客站点 145
6.5.1 官方镜像 146
6.5.2 编写简单的“Hello world” 146
6.5.3 使用WordPress镜像搭建个人博客站点 148
6.5.4 修改PHP的文件上传大小限制 151
6.6 使用Node.js搭建团队技术文档站点 151
6.6.1 官方镜像 152
6.6.2 编写一个简单的Web服务器 152
6.6.3 使用Hexo搭建团队技术文档站点 154
第7章 数据库容器化 161
7.1 什么是数据库 161
7.2 关系型数据库和非关系型数据库对比 162
7.3 主流的数据库 162
7.4 数据库容器化 163
7.5 SQL Server容器化 163
7.5.1 镜像说明 164
7.5.2 运行SQL Server 容器镜像 165
7.5.3 管理SQL Server 168
7.6 如何持久保存数据 174
7.6.1 方式一:使用主机 175
7.6.2 方式二:使用数据卷 178
7.7 MongoDB容器化 179
7.7.1 适用场景 179
7.7.2 不适用场景 180
7.7.3 镜像说明 180
7.7.4 运行MongoDB容器镜像 180
7.7.5 管理MongoDB 181
7.8 Redis容器化 184
7.8.1 优势 184
7.8.2 运行Redis镜像 185
7.8.3 使用redis-cli 185
7.8.4 使用Redis Desktop Manager管理Redis 186
7.8.5 既好又快地实现排行榜 187
7.9 MySQL容器化 191
7.9.1 镜像说明 191
7.9.2 运行MySQL容器镜像 192
7.9.3 管理MySQL 194
第8章 搭建Kubernetes集群 198
8.1 Docker+ Kubernetes已成为云计算的主流 198
8.1.1 什么是Kubernetes 198
8.1.2 Kubernetes正在塑造应用程序开发和管理的未来 199
8.2 Kubernetes主体架构 199
8.2.1 主要核心组件 200
8.2.2 基本概念 202
8.3 使用Minikube部署本地Kubernetes集群 208
8.3.1 什么是Kubernetes集群 208
8.3.2 使用Minikube创建本地Kubernetes实验环境 209
8.4 使用kubectl管理Kubernetes集群 217
8.4.1 概述 217
8.4.2 语法 217
8.4.3 主要命令说明 218
8.4.4 资源类型说明 220
8.4.5 命令标志说明 221
8.4.6 格式化输出 221
8.5 使用kubeadm创建集群 222
8.5.1 kubeadm概述 222
8.5.2 kubelet概述 223
8.5.3 定义集群部署目标和规划 223
8.5.4 开始部署 224
8.5.5 主节点部署 229
8.5.6 工作节点部署 237
8.5.7 安装仪表盘 239
8.6 集群故障处理 243
8.6.1 健康状态检查——初诊 244
8.6.2 进一步诊断分析——听诊三板斧 247
8.6.3 容器调测 252
8.6.4 对症下药 254
8.6.5 部分常见问题处理 255
8.6.6 小结 260
第9章 将应用部署到Kubernetes集群 261
9.1 使用kubectl部署应用 261
9.1.1 kubectl部署流程 261
9.1.2 部署一个简单的Demo网站 262
9.2 应用伸缩和回滚 264
9.2.1 使用“kubectl scale”命令来伸缩应用 264
9.2.2 使用“kubectl autoscale”命令来自动伸缩应用 265
9.2.3 使用“kubectl run”命令快速运行应用 265
9.2.4 使用“kubectl set”命令更新应用 266
9.2.5 使用“kubectl rollout”命令回滚应用 268
9.3 通过Service访问应用 269
9.3.1 通过Pod IP访问应用 269
9.3.2 通过ClusterIP Service在集群内部访问 270
9.3.3 通过NodePort Service在外部访问集群应用 272
9.3.4 通过LoadBalancer Service在外部访问集群应用 274
9.3.5 Microsoft SQL Server数据库实战 276
9.4 使用Ingress负载分发微服务 278
9.4.1 Demo规划 279
9.4.2 准备Demo并完成部署 279
9.4.3 创建部署资源 280
9.4.4 创建服务资源 282
9.4.5 创建Ingress资源并配置转发规则 283
9.5 利用Helm简化Kubernetes应用部署 286
9.5.1 Helm基础 287
9.5.2 安装Helm 287
9.5.3 使用Visual Studio 2019为Helm编写一个简单的应用 289
9.5.4 定义charts 293
9.5.5 使用Helm部署Demo 296
9.5.6 Helm常用操作命令 301
第10章 将应用托管到云端 303
10.1 什么是云计算 303
10.1.1 为什么要上云 304
10.1.2 云计算的三种部署方式 305
10.1.3 云服务的类型 305
10.2 Docker+k8s是上云的不二选择 306
10.2.1 上云的问题 306
10.2.2 利用Docker+k8s解决传统应用上云问题 306
10.3 主流云计算容器服务介绍 307
10.3.1 亚马逊AWS 307
10.3.2 微软Azure 308
10.3.3 阿里云 310
10.3.4 腾讯云 311
10.4 自建还是托管 312
10.4.1 自建容器服务存在的问题 312
10.4.2 云端容器服务的优势 313
10.5 一般应用服务部署流程 313
10.5.1 创建集群和节点 314
10.5.2 创建命名空间和镜像 314
10.5.3 创建服务 317
10.5.4 配置镜像触发器 323
10.5.5 推送镜像 324
10.6 如何节约云端成本 325
10.6.1 无须过度购买配置,尽量使用自动扩展 325
10.6.2 最大化地利用服务器资源 325
10.6.3 使用Ingress节约负载均衡资源 326
10.6.4 使用NFS盘节约存储成本 327
10.7 问题处理 327
10.7.1 镜像拉取问题 327
10.7.2 绑定云硬盘之后Pod的调度问题 329
10.7.3 远程登录 329
10.7.4 利用日志来排查问题 330
第11章 容器化后DevOps之旅 332
11.1 DevOps基础知识 332
11.1.1 什么是DevOps 332
11.1.2 为什么需要DevOps 333
11.1.3 DevOps对应用程序发布的影响 335
11.1.4 如何实施DevOps 335
11.2 Docker与持续集成和持续部署 336
11.2.1 Docker与持续集成和持续部署 336
11.2.2 参考流程 338
11.3 使用Azure DevOps完成CI/CD 340
11.3.1 适用于容器的CI/CD流程 341
11.3.2 使用Azure DevOps配置一个简单的CI/CD流程 341
11.4 使用Tencent Hub完成CI/CD 347
11.4.1 关于Tencent Hub 347
11.4.2 使用Tencent Hub配置一个简单的CI流程 348
11.4.3 直接使用容器服务的镜像构建功能 360
11.5 使用内部管理工具完成CI/CD流程 361
11.5.1 一个简单的CI/CD流程 361
11.5.2 关于TeamCity 361
11.5.3 运行TeamCity Server 363
11.5.4 运行TeamCity Agent 364
11.5.5 连接和配置Agent 366
11.5.6 创建项目以及配置CI 367
11.5.7 使用Jenkins完成CI/CD 372

推荐

车牌查询
桂ICP备20004708号-3