前言
Kubernetes 是一款流行的容器编排器。它将许多计算机整合成一个大型计算资源,并建立了一种通过Kubernetes 应用程序编程接口(API)寻址资源的方法。Kubernetes 是起源于Google 的开源软件,在云原生计算基金会(Cloud Native Computing Foundation,CNCF)的带领下,通过众多合作者过去五年的努力开发而成。
操作器扩展了Kubernetes,能够自动化特定应用程序整个生命周期的管理。操作器不仅可以作为Kubernetes 上分发应用程序的打包机制,而且还可以监视、维护、恢复和升级部署的软件。
本书面向的读者对象
如果你有在Kubernetes 集群上部署应用程序的经验,那么一定很熟悉构建操作器模式所面临的难题和诉求。如果你有在编排集群之外维护基础服务(如数据库和文件系统)的经历,并且渴望将其带入社区,那么本书一定非常适合你。
本书的主要内容
本书介绍了什么是操作器,以及如何利用操作器扩展Kubernetes API。书中展示了如何部署和使用现有的操作器,以及如何使用红帽的操作器框架为你的应用程序创建和分发操作器。此外,本书还介绍了有关设计、构建和分发操作器的良好实践,以及将网站可靠性工程(SRE)原则运用到操作器的理念。第1 章首先介绍了操作器及其概念。接下来,介绍了一些获得访问Kubernetes集群的方法,以供在后续章节的练习中使用。在成功运行集群之后,本章介绍了操作器的部署,并观察应用程序发生故障、扩展或升级到新版本时操作器的行为。
在接下来的几章中,我们将探索操作器SDK,并向你展示如何利用SDK 来构建操作器,以帮助示例应用程序成为Kubernetes 的一流公民。在对实践基础有了基本了解之后,我们还将讨论操作器所应用的SRE 理念及其共同目标,即降低运维的工作量和成本,提高服务可靠性,将团队从日复一日地维护工作中解脱出来,激励团队成员的创新。
操作器框架与SDK
操作器模式源自CoreOS(https://coreos.com),这是一种自动化Kubernetes集群上日益复杂的应用程序的方法,包括管理Kubernetes 本身及其核心的etcd 键值存储(https://github.com/coreos/etcd)。在被红帽收购后,操作器一直在不断发展,最终于2018 年发布了开源的操作器框架和SDK。本书的示例使用了红帽的操作器SDK,以及操作器框架所结合的分发机制。
其他操作器工具
操作器的社区在不断地发展,单是红帽分发频道就容纳了对应于众多供应商和项目应用程序的一百多个操作器。除此之外,还有其他几种操作器的构建工具。虽然本书没有详细讨论这些工具,但是在你阅读完本书之后,可以将它们与操作器SDK 和框架进行比较。其他可用于构建操作器的开源工具包括Python 版的Kopf(https://oreil.ly/JCL-S)、面向Kubernetes 项目的Kubebuilder(https://oreil.ly/8zdbj)以及Java 版的操作器SDK(https://oreil.ly/yXhVg)。
排版约定
本书使用了下述排版约定。
斜体(Italic)
表示新术语、URL、电子邮件地址、文件名和扩展名。
等宽字体(Constant Width)
表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。
加粗等宽字体(constant width bold)
表示应该由用户输入的命令或其他文本。
等宽斜体(constant width italic)
表示应该由用户输入的值或根据上下文确定的值替换的文本。
使用代码示例
你可以通过如下链接下载本书的补充材料(代码示例,练习等):https://github.com/kubernetes-operators-book/
如果你对本书代码示例的使用有任何技术问题或困难,请发送电子邮件到:bookquestions@oreilly.com
本书的目的是帮助你完成工作。一般来说,你可以在自己的程序或者文档中使用本书附带的示例代码。你无需联系我们获得使用许可,除非你要复制大量的代码。例如,使用本书中的多个代码片段编写程序就无需获得许可。但以CD-ROM 的形式销售或者分发O’Reilly 书中的示例代码则需要获得许可。回答问题时援引本书内容以及书中示例代码,无需获得许可。在你自己的项目文档中使用本书大量的示例代码时,则需要获得许可。
我们不强制要求署名,但如果你这么做我们将深表感激。署名一般包括书名、作者、出版社和国际标准书号。例如:“Kubernetes Operators by Jason Dobies and Joshua Wood (O’Reilly). Copyright 2020 Red Hat, Inc.,978-1-492-04805-3”。
如果你觉得自身情况不在合理使用或上述允许的范围内,请通过邮件和我们联系,地址是 permissions@oreilly.com。
如果你对本书有一些评论或技术上的建议, 请发送电子邮件到:
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。
致谢
本书得以付梓,我们要感谢红帽以及OpenShift Advocacy 团队的大力支
持,特别是Ryan Jarvinen 给予的全方面协助。感谢Anish Asthana、Evan
Cordell、Michael Gasch、Michael Hausenblas、Shawn Hurley 和Jess Males,
感谢你们为本书的审核、检查、建议以及其他工作所付出的努力,本书的内
容才更加完善和连贯。