《基于Kubernetes的容器云平台实战》

举报
华章计算机 发表于 2019/06/02 01:28:09 2019/06/02
【摘要】 本书摘自《基于Kubernetes的容器云平台实战》——作者是陆平、左奇、付光、张晗、赵培、单良

云计算与虚拟化技术丛书


基于Kubernetes的容器云平台实战


陆平 左奇 付光 张晗 赵培 单良 编著

基于Kubernetes的容器 立.jpg

Foreword 序

我极力推荐本书的原因有以下几点:

1)从概念到大规模实践,云计算在短短几年间发展迅速,特别是当云计算与行业深度融合后,带来了翻天覆地的创新,凸显了巨大的应用价值和发展前景。本书的出版非常重要和及时,对我国云计算研究和产业化起到积极作用。

2)本书从一个开发者的角度去理解、分析和解决问题:从基础入门到核心原理,从运行机制到实战开发,再从系统运维到应用实践,内容全面,由浅入深,图文并茂,阐述清晰,架构分析透彻,经验体会深刻。

3)本书首次从Docker到Kubernetes,并对各种微服务架构进行了完整、系统的介绍。读者可以由浅到深、系统深入地学习容器云的平台架构、基础核心功能、网络、安全等。

4)本书采用理论加实践的模式,通过实践来强化对理论知识的理解。如MySQL容器化、跨数据中心容器云服务部署方案、GPU虚拟化、TensorFlow容器化部署、Spark容器化部署等。

5)本书将目前最新技术热点与容器相结合,如将Spring Cloud、Serverless、Service Mesh与Docker进行结合,使读者了解业界关注的最新前沿技术发展。

6)本书作者多年来一直从事云计算的研究,已取得了不少创新研究成果,书中不少内容是作者多年实践容器云平台的设计思想和成果。

本书适用于希望学习和使用Kubernetes以及正在寻找管理数据中心解决方案的软件工程师、测试工程师、运维工程师和软件架构师,同时本书还可作为Docker+Kubernetes的高级延伸教材,用于搭建基于Kubernetes的各类平台,实践DevOps、微服务、Serverless、Spring Cloud等。我相信通过阅读本书,读者将全面认识容器云平台,并全面掌握容器云整体技术。


清华大学





前  言  Preface

随着基础设施即服务(IaaS)的技术普及和广泛使用,人们逐渐认识到IaaS技术所带来的显著优势,如资源按需灵活定制、低成本、弹性伸缩、统一管控等,但这仅解决了应用系统对IT资源需求的按需交付问题,应用系统本身的DevOps、CI/CD、编排、自动化部署、配置管理、服务发现与路由、弹性伸缩、自动化监控与日志采集等工作只能由应用自身完成或依赖于第三方工具,这将大大增加应用系统研发、运维和集成难度。

另一方面,随着企业数字化变革的深入发展,企业对微服务、分布式架构、Spring Cloud、大数据、人工智能、Serverless等新技术的使用也日益广泛,迫切需要一个满足上述需求的支撑平台。

PaaS平台的出现正是上述问题的最佳解决方案,也因此成为全球各大IT巨头和初创公司的研发重点,如IBM、VMware等,各种PaaS平台粉墨登场,竞争异常激烈,如Ansible、Puppet、Cloudify、CloudFoundry、Mesos、Swarm、Kubernetes等,最终一个以“Docker+Kubernetes”为核心的容器云平台让人们看到了希望,它可以满足大多数应用对PaaS平台的期望。

作者在容器云平台领域有多年的技术积累。本书结合容器云最新技术趋势和作者的长期实践,对容器云平台提出系统的见解,并对容器云平台实践提供了思路和建议。本书在组织结构上分成三大部分:基础篇、中级篇和高级篇。

基础篇(第1~5章)重点帮助初级人群快速掌握Docker基础知识,囊括了Docker容器的技术架构、Docker引擎原理、镜像制作与优化、镜像仓库管理等容器基础知识,文字浅显易懂。

中级篇(第6~16章)是针对初中级读者,使其具备全景PaaS技术栈理论和设计技能,包括Kubernetes架构及核心理念和技术原理、服务发现、容器网络及存储解决方案、运维监控等。同时还提供很多高级案例,如跨区域的服务部署、TensorFlow容器化部署、金融PaaS云平台等,有助于加深读者对Kubernetes各种技术的理解,并能够融会贯通。

高级篇(第17~21章)是针对中级读者的进阶篇,通过本篇可了解业界最新的微服务基础知识和各种微服务框架(或解决方案),如Spring Cloud、Serverless、Service Mesh等,还将这几种微服务框架与容器云平台进行融合,以提供功能更完整、更健壮的容器云解决方案。





目  录  Contents

前言

第1章 Docker简介  1

1.1 什么是Docker  1

1.2 为什么要用Docker  3

1.3 Docker基本概念  4

1.3.1 镜像  4

1.3.2 容器  6

1.3.3 镜像仓库  8

1.4 Docker架构及原理  8

1.4.1 Docker架构  8

1.4.2 Docker原理  11

1.4.3 容器网络  15

1.4.4 容器存储  16

1.5 Docker安装  16

1.5.1 手动安装模式  17

1.5.2 Ubuntu中自动化安装Docker  18

1.5.3 CentOS中自动化安装Docker  19

第2章 容器引擎  21

2.1 容器引擎实现原理  22

2.2 容器生命周期管理  29

2.3 容器状态管理  33

2.4 访问运行状态容器  35

2.5 访问容器内容  36

第3章 镜像管理  37

3.1 Dockerfile及镜像制作  37

3.1.1 Dockerfile的作用  37

3.1.2 Dockerfile文件构成  37

3.1.3 常用命令集  38

3.1.4 构建镜像  38

3.2 镜像基本操作  38

3.2.1 从镜像仓库下载镜像  38

3.2.2 将本地镜像上传到镜像仓库  39

3.2.3 查看本地镜像  39

3.2.4 导出和导入本地镜像  40

3.2.5 构建镜像  41

3.2.6 修改本地镜像标识  42

3.2.7 删除本地镜像  42

3.3 Dockerfile优化  42

3.3.1 Dockerfile检查项  42

3.3.2 Dockerfile优化实例  43

3.3.3 检查及优化工具  44

3.4 操作系统基础镜像制作  44

3.4.1 操作系统版本选择  45

3.4.2 操作系统参数调整  45

3.4.3 确定基础rpm包范围  45

3.4.4 确定常用命令范围  46

3.4.5 操作系统镜像制作过程  48

3.4.6 系统资源限制配置说明  49

3.5 容器镜像安全加固  49

3.5.1 容器安全加固规范  49

3.5.2 安全检查工具  51

第4章 镜像仓库管理  52

4.1 Docker Registry  52

4.1.1 Docker Hub  52

4.1.2 第三方公共仓库  53

4.1.3 建立私有镜像仓库  53

4.2 Harbor  54

4.2.1 Harbor架构  55

4.2.2 Harbor的镜像同步机制  56

4.2.3 Harbor用户认证  56

4.2.4 Harbor容器镜像安全扫描  57

4.2.5 Harbor部署实战  57

第5章 Docker相关部署实践  59

5.1 MySQL Docker部署实践  59

5.1.1 MySQL简介  59

5.1.2 MySQL为什么要容器化部署  60

5.1.3 MySQL容器化操作实践  60

5.2 Docker支持GPU实践  62

5.2.1 GPU简介  62

5.2.2 CPU与GPU的对比  63

5.2.3 通过nvidia-docker使用GPU  63

第6章 Kubernetes简介  65

6.1 PaaS简介  65

6.1.1 传统PaaS系统  65

6.1.2 基于Docker的新型PaaS平台  67

6.2 为什么需要Kubernetes  69

6.3 Kubernetes的由来  69

6.3.1 Kubernetes的特点  69

6.3.2 Kubernetes的历史  70

6.4 Kubernetes核心概念  71

第7章 Kubernetes架构和部署  73

7.1 Kubernetes架构及组件  73

7.1.1 Master节点  73

7.1.2 Node节点  75

7.1.3 调度控制原理  76

7.1.4 集群功能模块间的通信  76

7.1.5 Kubernetes高可用方案  77

7.2 Kubernetes部署方案总结  77

第8章 Pod相关核心技术  81

8.1 Pod  81

8.1.1 Pod定义文件详解  81

8.1.2 基本操作  83

8.1.3 Pod与容器  85

8.1.4 镜像  86

8.1.5 其他设置  86

8.1.6 Pod调度  89

8.1.7 Pod生命周期  90

8.2 Label  92

8.3 Replication Controller和Replica Set  93

8.3.1 RC定义文件详解  93

8.3.2 RC与Pod的关联——Label  95

8.3.3 弹性伸缩  97

8.3.4 滚动升级  98

8.3.5 新一代副本控制器Replica Set  100

8.4 Horizontal Pod Autoscaler  101

8.5 Deployment  102

8.6 Job  105

8.7 StatefulSet  106

8.7.1 使用StatefulSet  106

8.7.2 扩容/缩容StatefulSet  108

8.8 ConfigMap  110

8.9 健康检查  112

8.9.1 流程健康检查  112

8.9.2 应用健康检查  112

第9章 Kubernetes Service  114

9.1 容器及Pod间通信  115

9.2 kube-proxy  117

9.3 DNS服务发现机制  118

9.4 Headless服务  119

9.5 Kubernetes服务  120

9.5.1 ClusterIP  122

9.5.2 NodePort  123

9.5.3 LoadBalancer  125

9.5.4 Ingress  125

9.6 网络策略  127

9.7 完整的Kubernetes服务发布实践  128

9.7.1 各Kubernetes集群

LoadBalancer服务发布  130

9.7.2 Ingress服务发布  132

9.7.3 服务发现  133

第10章 Kubernetes网络  134

10.1 单主机Docker网络通信  134

10.1.1 Host模式  135

10.1.2 Container模式  135

10.1.3 None模式  136

10.1.4 Bridge模式  136

10.1.5 基础网络模型的优缺点分析  137

10.2 跨主机Docker网络通信  137

10.2.1 Flannel网络方案  139

10.2.2 Calico网络方案  140

10.2.3 利用Kuryr整合OpenStack与Kubernetes网络  143

10.2.4 网络方案对比分析  144

第11章 Kubernetes存储  145

11.1 存储使用场景  145

11.2 文件存储的几种形式  146

11.3 Flex Volume存储管理方案  148

11.3.1 为什么需要灵活存储组件  148

11.3.2 如何实现灵活存储组件  148

11.4 标准化容器存储接口CSI  149

第12章 安全及多租户配额管理  150

12.1 API服务器认证  151

12.2 API服务器授权  152

12.3 Admission Control  152

12.4 Service Account  154

12.5 配额管理  155

12.5.1 资源请求与限制  155

12.5.2 全局默认配额  156

12.5.3 多租户资源配额管理  157

第13章 Kubernetes运维管理  161

13.1 Kubernetes日志管理  161

13.1.1 日志概述  161

13.1.2 ELK日志管理方案实践  162

13.2 Kubernetes监控管理  172

13.2.1 监控概述  172

13.2.2 监控方案实践  172

第14章 TensorFlow on Kubernetes  182

14.1 TensorFlow简介  182

14.2 在Kubernetes上部署TensorFlow的价值  183

14.3 Kubernetes如何支持GPU  184

14.3.1 使用方法  184

14.3.2 多种型号的GPU  186

14.3.3 使用CUDA库  187

14.4 TensorFlow on Kubernetes架构  188

14.5 TensorFlow部署实践  189

14.5.1 下载镜像  189

14.5.2 yaml文件准备  189

14.5.3 执行命令安装TensorFlow  190

第15章 Spark on Kubernetes  191

15.1 Spark系统概述  191

15.1.1 Spark简介  191

15.1.2 Spark与Hadoop差异  191

15.1.3 功能模块  192

15.1.4 功能关系  192

15.2 基于容器技术的Spark部署  193

15.2.1 基于容器技术部署Spark的优势  193

15.2.2 针对大数据应用:容器的计算性能优化方向  194

15.2.3 针对大数据应用:容器的网络性能优化方向  194

15.2.4 针对大数据应用:容器的弹性&扩容  194

15.3 Spark集群安装  195

15.3.1 制作Spark镜像  195

15.3.2 yaml文件准备  195

15.3.3 执行命令安装Spark  196

第16章 金融容器云平台总体设计方案  197

16.1 金融行业为什么需要容器云平台  197

16.2 容器及编排技术选型  198

16.2.1 容器选型  198

16.2.2 编排引擎选型  199

16.3 架构设计  199

16.3.1 系统架构  199

16.3.2 逻辑架构  200

16.3.3 数据架构  202

16.3.4 技术架构  205

16.3.5 部署架构  206

16.4 关键模块方案设计  206

16.4.1 网络  206

16.4.2 存储  207

16.4.3 日志  207

16.4.4 监控  209

16.4.5 配置中心  211

16.4.6 安全管理  212

16.4.7 管理门户  213

16.4.8 微服务网关  214

16.4.9 DevOps  215

16.4.10 可视化编排及自动化部署  216

16.4.11 多租户  216

16.5 传统应用迁移注意事项  217

第17章 DevOps  219

17.1 用Docker实现DevOps的优势  219

17.2 基于Docker实现DevOps  220

17.3 基于容器的持续集成流程设计  221

17.3.1 版本管理  221

17.3.2 流水线  221

17.4 工具链  222

17.4.1 项目管理  222

17.4.2 需求管理  222

17.4.3 代码托管  222

17.4.4 持续集成  223

17.4.5 测试  223

17.4.6 自动化部署  223

第18章 微服务  224

18.1 微服务架构的优点  224

18.2 微服务架构概念模型  225

18.3 微服务网关  226

18.4 服务注册与发现  226

18.4.1 服务注册  226

18.4.2 服务发现  227

18.4.3 服务注册发现方案对比  228

18.5 进程间通信  228

18.5.1 Rest  229

18.5.2 Thrift  229

18.5.3 消息队列  229

18.6 微服务应用性能监控  229

18.6.1 开源方案  230

18.6.2 听云商业化方案  230

18.7 微服务框架  234

第19章 Spring Cloud  237

19.1 Spring Boot  237

19.1.1 为什么要使用

Spring Boot  238

19.1.2 快速入门  238

19.1.3 Spring Boot的优缺点总结  241

19.2 Spring Cloud  242

19.2.1 核心成员  243

19.2.2 Spring Cloud的优缺点分析  246

19.2.3 与Spring Boot之间的关系  247

19.3 Spring Cloud与Kubernetes融合实践  247

19.3.1 API网关  249

19.3.2 服务注册发现  250

19.3.3 客户端负载均衡  250

19.3.4 断路器  251

19.3.5 监控  252

19.3.6 配置管理  252

19.3.7 消息总线  253

19.3.8 链路跟踪  254

19.4 Spring Cloud特点总结  254

第20章 Serverless  256

20.1 Serverless发展史简介  256

20.2 Serverless的工作原理  257

20.2.1 Serverless的定义  258

20.2.2 Serverless的特点  259

20.2.3 Serverless的分类  259

20.2.4 Serverless设计的优势  260

20.2.5 Serverless设计的局限性  260

20.2.6 Serverless与相关概念间的关系  261

20.3 Serverless平台选型  261

20.4 Serverless适用场景  262

20.5 对比分析  263

第21章 Service Mesh  264

21.1 服务网格的由来  264

21.1.1 分布式架构对服务网络的要求  265

21.1.2 向Service Mesh演进  267

21.1.3 Service Mesh的定义  268

21.2 Linkerd  270

21.3 Istio  272

21.3.1 Istio架构  273

21.3.2 设计目标  275

21.3.3 流量管理  276

21.3.4 Pilot  276

21.3.5 请求路由  277

21.3.6 发现和负载均衡  278

21.3.7 处理故障  279

21.3.8 故障注入  280

21.3.9 规则配置  280

21.4 Service Mesh发展展望  283


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。