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

作者
布兰登·伯恩斯 埃迪·维拉尔巴 戴夫·斯特雷贝尔 拉克兰·埃文森 李文强
丛书名
O’Reilly精品图书系列
出版社
机械工业出版社
ISBN
9782101201427
简要
简介
内容简介书籍计算机书籍 ---------------------------Kubernetes实战--------------------------- 在本书中,四位在分布式系统、企业应用开发和开源领域有着丰富经验的 Kubernetes 专家将会对如何使用 Kubernetes 容器编排系统构建应用进行全程指导。本书内容丰富,涵盖开发人员的工作流程、监控和度量指标、配置管理、持续集成和测试、版本控制与发布、应用程序的全球化部署、资源管理、网络、Pod安全、集群策略与治理、多集群管理、外部服务集成、机器学习、如何在Kubernetes上构建更高层次的平台、状态管理和有状态应用程序、许可控制与授权等,是一本非常全面的实践指南。 ---------------------------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实战---------------------------


前言1
第1章 搭建一个基本服务7
1.1 应用程序概览7
1.2 配置文件管理7
1.3 使用Deployment创建多副本服务9
1.4 为HTTP流量配置外部Ingress12
1.5 使用ConfigMap配置应用程序13
1.6 使用Secret管理认证15
1.7 部署简单的有状态数据库18
1.8 使用服务创建TCP负载均衡器21
1.9 使用Ingress将流量路由到静态文件服务器22
1.10 使用Helm参数化应用程序24
1.11 部署服务的最佳实践26
1.12 小结27
第2章 开发者工作流29
2.1 目的29
2.2 搭建开发集群30
2.3 为多个开发者搭建共享集群31
2.4 启动开发者工作流38
2.5 环境初始化38
2.6 启动开发39
2.7 启动测试与调试40
2.8 搭建开发环境的最佳实践40
2.9 小结41
第3章 监控与日志43
3.1 指标与日志43
3.2 监控技术43
3.3 监控模式44
3.4 Kubernetes指标概述45
3.5 应该监控什么指标48
3.6 监控工具49
3.7 使用Prometheus监控Kubernetes51
3.8 日志概述55
3.9 日志工具57
3.10 使用EFK记录日志58
3.11 告警60
3.12 监控、日志及告警的最佳实践62
3.13 小结63
第4章 配置、机密以及RBAC65
4.1 通过ConfigMap和Secret配置应用65
4.2 ConfigMap和Secret API的最佳实践67
4.3 RBAC73
4.4 小结78
第5章 持续集成、测试和部署79
5.1 版本控制80
5.2 持续集成80
5.3 测试81
5.4 镜像构建81
5.5 为镜像标记标签82
5.6 持续部署83
5.7 部署策略84
5.8 生产环境中的测试88
5.9 搭建流水线并进行混沌试验89
5.10 CI/CD的最佳实践94
5.11 小结95
第6章 版本控制、发布和部署97
6.1 版本控制97
6.2 发布98
6.3 部署99
6.4 综合示例100
6.5 小结104
第7章 全球化应用的分发和预演105
7.1 镜像的分发106
7.2 参数化部署107
7.3 全球流量负载均衡107
7.4 可靠的全球化部署108
7.5 如何应对出现的问题113
7.6 全球化部署的最佳实践114
7.7 小结115
第8章 资源管理117
8.1 Kubernetes Scheduler117
8.2 高级调度技术119
8.3 Pod资源管理122
8.4 资源管理的最佳实践136
8.5 小结136
第9章 网络、网络安全与服务网格137
9.1 Kubernetes的网络原则137
9.2 网络插件139
9.3 Kubernetes中的服务142
9.4 网络安全策略149
9.5 服务网格153
9.6 小结155
第10章 Pod和容器安全157
10.1 PodSecurityPolicy API157
10.2 工作负载隔离和RuntimeClass170
10.3 其他Pod和容器安全注意事项172
10.4 小结173
第11章 集群的策略和治理175
11.1 为什么策略和治理很重要175
11.2 这里所说的策略有何不同175
11.3 云原生策略引擎176
11.4 Gatekeeper简介176
11.5 审计181
11.6 策略和治理的最佳实践183
11.7 小结184
第12章 多集群管理185
12.1 为什么需要多集群185
12.2 多集群设计的考量187
12.3 多集群部署管理189
12.4 GitOps集群管理方式191
12.5 多集群管理工具194
12.6 Kubernetes Federation194
12.7 多集群管理的最佳实践197
12.8 小结198
第13章 集成外部服务和 Kubernetes199
13.1 将外部服务导入Kubernetes199
13.2 将Kubernetes服务导出到外部203
13.3 在Kubernetes之间共享服务207
13.4 第三方工具207
13.5 连接集群和外部服务的最佳实践208
13.6 小结208
第14章 在Kubernetes上运行机器学习工作负载209
14.1 为什么Kubernetes非常适合机器学习209
14.2 机器学习工作流210
14.3 Kubernetes集群管理员与机器学习211
14.4 数据科学家关心的事218
14.5 在Kubernetes上运行机器学习工作负载的最佳实践219
14.6 小结220
第15章 在Kubernetes上构建高层应用的模式221
15.1 开发高层抽象的方法221
15.2 扩展Kubernetes222
15.3 构建平台时的设计考量224
15.4 构建应用平台的最佳实践226
15.5 小结227
第16章 管理状态和有状态应用229
16.1 卷和卷挂载230
16.2 Kubernetes存储231
16.3 有状态应用235
16.4 小结240
第17章 准入控制和授权241
17.1 准入控制241
17.2 授权248
17.3 小结251
第18章 总结253



---------------------------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