猜你喜欢
Kubernetes经典实例

Kubernetes经典实例

书籍作者:Sébastien Goasguen ISBN:9787519823993
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:3135
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

在本书中,作者提供了在开发环境和产品环境中安装、使用Kubernetes以及与之交互的具体解决方案。并介绍了如何改造系统来满足具体的需求,以及熟悉Kubernetes更广泛的生态环境。每个章节介绍的技巧都以常用的“问题-解决方案-讨论”的过程来描述。
·创建Kubernetes集群。
·使用Kubernetes命令行界面。
·管理基本的workload类型。
·使用服务。
·探索Kubernetes API。
·管理有状态的非云端原生应用。
·使用卷与配置数据。
·集群别与应用程序别的规模伸缩。
·应用程序的安全。
·监视与日志。
·维护与排除故障。

作者简介

Sébastien Goasguen是拥有20年开源经验的资深专家,而且还是Kubernetes早期的代码贡献者。他创建了Skippbox,这家创业公司开发了kompose和Cabin等Kubernetes工具。他目前在Bitnami担任高云科技总监。

Michael Hausenblas是Go、Kubernetes和Red Hat的OpenShift的先驱开发者,他曾在Red Hat帮助AppOps建立和运营分发服务。在Red Hat之前,Michael从业于Mesosphere、MapR,并在爱尔兰和澳大利亚的研究机构担任要职。

编辑推荐

如果你们公司正在准备采用云端原生计算机架构,那么这本书将向你介绍如何成功地使用Kubernetes,它是自动部署、扩大与缩小规模以及容器化应用程序管理方面切实的标准。本书通过80多个久经考验的技巧,快速地向开发者、系统管理员和架构师介绍Kubernetes的入门知识,并掌握它所提供的强大的API。


前言

欢迎你阅读Kubernetes经典实例,感谢选择我们的书籍!在本书中,我们将帮助你解决关于Kubernetes的具体问题。我们总结了80多个技巧,主题包括建立集群、通过Kubernetes API对象管理容器化workload、使用存储的基本方法、安全配置以及Kubernetes的扩展等。无论你是Kubernetes新手,还是有一定的经验,我们希望你都可以从本书中找到有用的信息,提高你的经验和对Kubernetes的应用。
本书面向的读者对象
无论你是云端原生开发人员,或是系统管理员,或是这种新型的开发运维人员,本书都可以帮助你成功地在Kubernetes丛林中找到出路,帮你从开发走向正式产品。本书中的各个技巧并没有按照Kubernetes的基本概念线性展开,但是,每章包含的技巧都会运用Kubernetes的核心概念和API的基本方法。
为什么编写本书
我们两个人使用Kubernetes已经很多年了,并向其贡献了很多代码,我们看到了很多新手甚至是高级用户也会遇到的问题。我们想与大家分享我们积累的知识,包括在产品或在开发环境中运行Kubernetes的知识,以及开发Kubernetes的经验,例如向核心代码库或生态系统贡献代码,以及编写在Kubernetes上运行的应用程序。
本书的组织结构
本书包括14章。每章都是由若干以O'Reilly标准的提问模式(问题,解决方案,讨论)编写的小节组成的。你可以从头到尾依次阅读本书,也可以跳过某些章节。每个章节都是独立的,并且在理解一些其他章节的概念的时候,我们也提供了相应的备注。有些章节会展示具体的命令。
关于Kubernetes版本发行的说明
写这本书的时候,Kubernetes 1.7是最新的稳定版本,于2017年6月末发行,也是我们在本书中使用的版本注1。然而,书中所展示的解决方案普遍适用于其他旧版本,至少到Kubernetes 1.4都没问题。如果解决方案只适用于新版本的话,我们会做明确的解释,并列出所需的最低版本。
2017年,Kubernetes在每个季度都会推出新的版本,例如:3月的版本1.6,6月的版本1.7,9月的版本1.8,到12月本书的英文版发布的时候,Kubernetes推出了版本1.9。Kubernetes的版本发行标准明确指出了每个功能都可以在3个小版本期间得到支持注2。这意味着版本1.7中稳定的API对象的支持会一直持续到2018年3月。然而,因为本书在大多数时候仅使用稳定的API,所以即便你使用的是更新版本的Kubernetes,各个章节中提及的解决方案也依然有效。
你需要掌握的技术
这是一本中级水平的书,需要读者对一些开发和系统管理的概念有最基本的理解。在阅读本书前,请先确认对以下技术有基本的理解:
bash(UNIX shell)
bash是默认的Linux和MacOS的UNIX shell。你需要熟悉UNIX shell的知识,例如编辑文件,设定文件许可和用户权限,在文件系统内移动文件,以及一些基本的shell编程。如果你想学习bash的基本知识,请参阅O'Reilly出版的Cameron Newham的著作《Learning the bash Shell》,或JP Vossen和Carl Albing的著作《bash Cookbook》。
包管理
本书中提及的工具常常具有依赖性,需要安装一些软件包。因此,你需要了解包管理系统方面的知识。包管理系统可以是Ubuntu/Debian系统中的apt,CentOS/RHEL系统中的yum,或者MacOS的port或brew命令。无论是哪一种,请确认你了解如何安装、升级或删除软件包。
Git
Git已成为标准的分布式版本控制工具。如果你熟悉CVS和SVN,但是还未曾用过Git,那么应该尝试一下。Jon Loeliger和Matthew McCullough合著的《Version Control with Git》(O'Reilly出版)是个好的开始。同时,GitHub网站是优秀的资源,可以用于托管个人的代码仓库。更多关于GitHub的信息,请访问http://training.github.com和相关的交互式教程(https://try.github.io/levels/1/challenges/1)。
Python
除了C/C++或Java之外,我们总是鼓励学生选择一种脚本语言。曾经Perl是脚本语言的主宰,不过目前Ruby和Go似乎更加流行。本书中的大多数例子使用的都是Python,但是也有几个Ruby的例子,还有一个甚至用到了Clojure。O'Reilly出版了很多关于Python的书籍,包括Lubanovic的《Introducing Python》、Mark Lutz的《Programming Python》,以及David Beazley和Brian K. Jones合著的《Python Cookbook》。
Go
Kubernetes是用Go写的。过去几年中,Go已经成为了许多创业公司和系统相关的开源项目的新编程语言的首选。这本书并没有涉及Go编程,但是演示了如何编译Go项目。所以希望你对如何建立Go工作空间有基本的理解。如果想了解更多关于Go的知识,可以参阅O'Reilly的视频培训教程“Introduction to Go Programming”。
在线资源
Kubernetes清单文件、代码示例和其他本书中用到的脚本都保存到了GitHub上(https://github.com/k8s-cookbook/recipes)。你可以拷贝这个代码仓库,然后阅读相应的章节,并使用这些代码:
$ git clone https://github.com/k8s-cookbook/recipes这个代码仓库中的示例并不是在生产环境中使用的最佳设置。这些示例代码只是为了运行各个章节中的示例而编写的最简代码。
排版约定
本书使用了下述排版约定。
斜体(Italic)
表示新术语、URL、示例电子邮件地址、文件名和扩展名。
等宽字体(Constant Width)
表示代码,在段内用以表示与代码相关的元素,例如变量或函数名、数据库、数据类型、环境变量、声明和关键字。还用于命令和命令的结果输出。
等宽粗体字(Constant width bold)
表示命令或其他用户输入的文本。
斜体等宽字体(Constant Width Italic)
表示该文本应当由用户提供的值或由上下文决定的值。
表示提示或建议。
表示一般性说明。
表示警告或提醒。
使用代码示例
本书的目的是帮助你完成工作。一般来说,你可以在自己的程序或者文档中使用本书附带的示例代码。你无需联系我们获得使用许可,除非你要复制大量的代码。例如,使用本书中的多个代码片段编写程序就无需获得许可。但以CD-ROM的形式销售或者分发O’Reilly书中的示例代码则需要获得许可。回答问题时援引本书内容以及书中示例代码,无需获得许可。在你自己的项目文档中使用本书大量的示例代码时,则需要获得许可。
我们不强制要求署名,但如果你这么做,我们深表感激。署名一般包括书名、作者、出版社和国际标准图书编号。例如:“Kubernetes Cookbookby Sébastien Goasguen and Michael Hausenblas (O’Reilly). Copyright 2018Sébastien Goasguen and Michael Hausenblas, 978-1-491-97968-6”。
如果你觉得自身情况不在合理使用或上述允许的范围内,请通过邮件和我们联系,地址是[email protected]
O’Reilly Safari
Safari(以前的Safari Books Online)是面向企业、政府、教育和个人的会员制培训与参考平台。
Safari的会员可以访问成千上万的书籍、培训视频、学习路径、交互式教程和推荐的书单。这些内容由250多家出版社提供,其中包括:O’Reilly Media、Harvard Business Review、Prentice Hall Professional、Addison-WesleyProfessional、Microsoft Press、Sams、Que、Peachpit Press、Adobe、FocalPress、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBMRedbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett和Course Technology等。
更多关于Safari的信息,请访问我们的网站:http://oreilly.com/safari。
联系我们
请把你对本书的意见和疑问发给出版社:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
这本书有专属网页,你可以在那里找到本书的勘误、示例和其他信息。这个网页的地址是http://bit.ly/kubernetes-cookbook。
如果你对本书有一些评论或技术上的建议,请发送电子邮件到[email protected]
要了解O’Reilly图书、培训课程、会议和新闻的更多信息,请访问我们的网站,地址是:http://www.oreilly.com。
请在 Facebook 上联系我们,地址是:http://facebook.com/oreilly。
请在 Twitter 上关注我们,地址是:http://twitter.com/oreillymedia。
请观看我们的 Youtube视频:地址是:http://www.youtube.com/oreillymedia。
致谢
感谢整个Kubernetes社区开发了如此优秀的软件,我们是一个伟大的大家族,每个人都很开放,很热心,总是乐于助人。
创作这本书的过程比预想的困难,但我们还是完成了这项工作,我们对所有帮助过我们的人表示衷心的感谢。尤其要感谢Ihor Dvoretski、Liz Rice和Ben Hall的全面评论,他们帮助我们修正了很多问题,并提出了对所有读者都有帮助的更好的组织方式和章节。

目录

目录
前言 ..1
第1章 初识Kubernetes .9
1.1 无需安装即可使用Kubernetes ..9
1.2 安装Kubernetes的命令行界面和kubectl ..10
1.3 安装Minikube并运行本地的Kubernetes实例 12
1.4 在本地使用Minikube进行开发 ..14
1.5 在Minikube上运行应用程序 15
1.6 使用Minikube访问仪表盘 ..16
第2章 创建Kubernetes集群 ..20
2.1 安装kubeadm以创建Kubernetes集群 .20
2.2 使用kubeadm创建Kubernetes集群22
2.3 从GitHub上下载Kubernetes .24
2.4 下载客户端和服务器端可执行文件 ..25
2.5 使用hyperkube映像通过Docker运行Kubernetes主节点 26
2.6 编写systemd单元文件来运行Kubernetes的组件 ..29
2.7 在Google Kubernetes引擎上创建Kubernetes集群 ..32
2.8 在Azure容器服务上创建Kubernetes集群 .34
第3章 学习使用Kubernetes客户端 39
3.1 查看资源 39
3.2 删除资源 41
3.3 使用kubectl观察资源的变化 42
3.4 使用kubectl编辑资源 .43
3.5 通过kubectl解释资源和字段 44
第4章 创建与修改基础的工作负载 .46
4.1 通过kubectl run创建部署 ..46
4.2 通过清单文件创建对象 47
4.3 从零创建pod的清单文件 48
4.4 通过kubectl run创建部署 ..50
4.5 更新部署 54
第5章 使用服务 .58
5.1 通过创建服务来公布应用程序 ..59
5.2 验证服务的DNS注册项 .61
5.3 改变服务类型 62
5.4 在Minikube上配置ingress controller 64
5.5 从集群外部访问服务 ..65
第6章 探索Kubernetes的API与关键元数据 69
6.1 发现Kubernetes上API的访问点 .69
6.2 掌握Kubernetes清单文件的结构 .71
6.3 通过创建命名空间避免命名冲突 .73
6.4 设置命名空间的配额 ..74
6.5 给对象贴标签 75
6.6 使用标签进行查询 76
6.7 通过命令注解资源 78
第7章 管理具体的工作负载 ..80
7.1 运行批处理 .80
7.2 在Pod内按照计划时间运行任务 ..82
7.3 在每个节点上运行基础设施的服务 ..83
7.4 管理有状态的主从应用 85
7.5 影响Pod的启动行为 89
第8章 卷与配置数据 .91
8.1 通过本地卷在容器间交换数据 ..91
8.2 通过Secret类型的卷将API的访问密钥传递给pod .93
8.3 提供配置数据给应用程序 ..97
8.4 在Minkube内使用持久卷 .100
8.5 掌握Minikube上数据的持久性 104
8.6 在GKE上动态配置持久性存储空间..107
第9章 伸缩 109
9.1 部署的伸缩 ..110
9.2 在GKE中自动调整集群的大小 .110
9.3 在AWS中自动调整集群的大小 114
9.4 在GKE上使用pod的横向自动伸缩 114
第10章 安全 .118
10.1 赋予应用程序唯一的身份 .118
10.2 列举并查看访问控制信息 .121
10.3 控制资源的访问权限 125
10.4 加强pod的安全 ..128
第11章 监控与日志 130
11.1 访问容器的日志 130
11.2 使用存活探针修复失败状态 ..131
11.3 使用就绪探针来控制pod的访问流 ..133
11.4 向部署添加存活探针和就绪探针 ..134
11.5 在Minikube上激活Heapster监视资源 137
11.6 在Minikube上使用Prometheus 139
11.7 在Minikube上使用Elasticsearch-Fluentd-Kibana ..144
第12章 维护与故障排除 ..149
12.1 启用kubectl的自动补齐 .149
12.2 删除服务上的pod 150
12.3 从集群外部访问集群IP的服务 ..152
12.4 掌握并解析资源的状态 ..153
12.5 调试pod 155
12.6 集群状态的详细快照 160
12.7 添加Kubernetes工作节点 .161
12.8 抽出Kubernetes节点以实施维护 163
12.9 管理etcd ..165
第13章 Kubernetes开发 .168
13.1 编译源代码 168
13.2 编译特定的组件 169
13.3 如何使用Python客户端与Kubernetes API交互..170
13.4 使用自定义的资源扩展API ..171
第14章 Kubernetes的生态系统 177
14.1 安装Helm(Kubernetes的包管理器) ..177
14.2 利用Helm安装应用程序 .178
14.3 利用Helm创建自己的图表打包应用程序 180
14.4 将Docker Compose文件转换成Kubernetes清单文件 ..182
14.5 使用kubicorn创建Kubernetes集群 ..183
14.6 在版本控制中保存加密的secret .188
14.7 利用kubeless部署函数 191
附录A 资源 195

产品特色