欢迎你阅读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”。
如果你觉得自身情况不在合理使用或上述允许的范围内,请通过邮件和我们联系,地址是permissions@oreilly.com。
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。
如果你对本书有一些评论或技术上的建议,请发送电子邮件到bookquestions@oreilly.com。
要了解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的全面评论,他们帮助我们修正了很多问题,并提出了对所有读者都有帮助的更好的组织方式和章节。