Kubernetes云原生数据管理
  • 推荐0
  • 收藏0
  • 浏览66

Kubernetes云原生数据管理

【美】Jeff Carpenter , 【美】Patrick McFadin (作者)  「DaoCloud道客」HwameiStor开源团队 (译者) 张春雨 (责任编辑)

  • 书  号:9787121470059
  • 出版日期:2024-01-01
  • 页  数:292
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Managing Cloud Native Data on Kubernetes
  • 原书号:9781098111328
  • 维护人:张春雨
《Kubernetes云原生数据管理》围绕 Kubernetes 云原生数据基础设施,介绍了如何通过 Kubernetes 管理数据存储,如何通过 Helm 和 Operator 在 Kubernetes 上自动部署和管理数据库,阐述了数据流式传输和数据分析的过程,探讨了在机器学习及其他新兴用例中如何使用 Kubernetes 云原生数据等。本书不仅深入阐述了云原生基础设施的发展历程和处理方式,而且分门别类地为每个场景提供了可以直接运行的示例代码,以便读者学习和练习。本书结构与英文原版保持一致,是 DaoCloud 云原生数据存储专家经反复校对后提供的译本。本书适合从事云端设计、构建和运行应用的开发人员,以及架构师和云原生工程师。无论你是Kubernetes 数据存储方面的“新手”还是有经验的“老兵”,相信本书都能让你有所受益。
来自官方社区的权威资料|直击k8s技术深水区|使用开源技术构建云原生数据服务
作者简介
Jeff Carpenter 是一位软件工程师和架构师,在多个行业拥有丰富的从业经历。作为一名开发人员倡导者,他致力于帮助其他工程师使用 Cassandra。除此之外,Jeff Carpenter还积极参与 Cassandra 和 Kubernetes 生态系统中多个开源项目的开发,其中包括 Stargate和 K8ssandra。同时,他还与他人合著了《Cassandra :权威指南》一书。
Patrick McFadin 是一位分布式系统黑客,自从他将调制解调器插入 Atari 计算机以来就致力于该领域。为追求冒险,他加入了美国海军,并参与了海军战术数据系统(NTDS)的开发,这进一步激发了他对分布式系统的热情。在 20 世纪 90 年代,互联网快速崛起时,他开始从事基础设施工作,后来差点因为互联网泡沫危机而失去生计来源。其间,Patrick 获得了加州州立理工大学圣路易斯奥比斯波分校的计算机工程学位,并专注于高规模互联网基础设施的研究。目前,他热衷于分布式数据系统的研究,并且自 2011 年以来始终是 Cassandra 项目的稳定贡献者。

译者简介
「DaoCloud 道客」成立于 2014 年底,公司拥有自主知识产权的核心技术,致力于打造开放的云操作系统为实体经济赋能,推动传统企业完成数字化转型。成立迄今,公司已在金融科技、先进制造、智能汽车、零售网点、城市大脑等多个领域深耕,标杆客户包括交通银行、浦发银行、上汽集团、格力集团、京东方、屈臣氏集团等。是国家级专精特新“小巨人”企业、被誉为科技领域准独角兽企业。
前言
Kubernetes 是否已经准备好处理有状态工作负载?可能是这个问题让你翻开了本书。自从云计算首次出现以来,数据基础设施(NoSQL/NewSQL、流式处理、分析)和应用基础设施(Docker、Kubernetes)都在迅速发展,但它们发展的方向有所不同。人们认为,是时候正式将这两个领域融合起来了。这不仅仅是对未来的渴望,目前已经有多个社区正在开展合作。那些试图为数据和应用而管理两套不同技术栈的组织很快就会发现自己处于竞争劣势。
Kubernetes 于 2014 年正式发布,在此之后的几年中,几乎没有人会认为它能够存放数据和有状态工作负载。2018 年 Kelsey Hightower 的推文代表了当时的主流观点:
Kubernetes 在运行有状态工作负载方面取得了巨大的进展,包括数据库和消息队列等,但人们仍然更倾向于不在 Kubernetes 上运行它们。
在过去的几年中,形势已经发生逆转。解决问题的工程师接受了 Kelsey 的挑战并付诸行动。Kubernetes 支持有状态工作负载的完善度可以说是毫不令人意外的,这是因为需求实在太旺盛了。如果还有人争论为什么数据库必须在裸金属机器上运行,或为什么不应该在容器内部部署数据基础设施等问题,那么他们可以关注本书。
人们还了解到,“永不”和“尚未”之间存在巨大的差异。计算、存储、网络现在被看作商品,为什么数据管理就是一个例外呢? Kubernetes 在降低成本和简化应用开发流程方面的价值导向意味着数据基础设施向 Kubernetes 的迁移是不可避免的。不仅是 Kubernetes 在发生变化,人们还将看到数据基础设施的项目也在发生变化。
写作本书的目的
DataStax 的“日常工作”要求我们在 Kubernetes 上有效地部署和操作 Apache Cassandra,这让我们产生了将有状态工作负载转移到 Kubernetes 上的想法。本着开源开发的精神,我们寻找了其他数据库和其他在有状态工作负载方面尝试过类似举措(并取得成功)的从业者,我们找到了一群志同道合的人,并在 2020 年推出了 Kubernetes 数据社区(DoKC)。DoKC 现在是一个独立的组织,已经举办了 100 多场交流会和一些现场活动。DoKC 交流会上的各类主题和演讲者是这个社区充满活力的证据,大家协同工作来建立标准和最佳实践。最重要的是,大家正一起努力学习,吸取过去的经验教训,并在打造新事物的过程中互帮互助。
随着参加的交流会越来越多,一些共同的主题便开始浮现。我们一遍又一遍地听到持久卷(PersistentVolume,PV)子系统的好处,StatefulSet 的优点和缺点,使数据库操作更易于管理的 Operator 模式的承诺,以及萌生的新型数据管理的想法。随着时间的推移,我们坚信这个新兴的从业者社区需要一个地方来将分散在多个演示文稿和博客文章中的要点收集起来,并将其提炼成易于理解的形式。本书就是这一过程的产物。
“路漫漫其修远兮,吾将上下而求索”,云原生数据领域还有很多工作要做,包括Operator、机器学习、数据 API、数据集的声明式管理等。我们希望本书能为其他更多图书、博客、演示文稿和学习资源打开“大门”。
本书的受众人群
本书的主要读者包括从事云端设计、构建和运行应用的开发人员与架构师。如果你恰好是其中一员并手捧本书,那你很可能早已听闻许多采用 Kubernetes 的机构,你或许已经加入了这个行列或至少正在考虑加入它。当然,你可能也对在 Kubernetes 上运行有状态工作负载持保留态度,并企图寻求帮助以走出困境。那你就来对地方了!本书将提供以下信息:
● 了解基本的 Kubernetes 资源及如何运用它们来构建数据基础设施
● 了解使用 Helm 和 Operator 等工具在 Kubernetes 上自动部署和操作数据基础设施的方法
● 针对应用,拥有评估和选用数据基础设施技术的能力
● 掌握将这些数据基础设施技术集成到整个技术栈中的方法
● 洞察新兴技术,有助于在未来提升基于 Kubernetes 的应用
我们通过 DoKC 认识了许多 Kubernetes 的核心开发人员和数据基础设施开发人员,他们虽然人数不多但也是本书十分重要的受众。我们希望创建一套通用的准则和最佳实践,并将其用作框架来推动 Kubernetes 的核心发展,以优化为了在 Kubernetes 上运行而构建的数据基础设施。让我们团结一致,推进 Kubernetes 云原生数据的实践。
本书开诚布公,直截了当——我们会告诉你哪些技术已经成熟稳固,也会告诉你有很多领域的技术还处于新兴阶段。我们将重点突出那些需要改进的领域。
如何阅读本书
建议通读本书,尤其是对 Kubernetes 经验不丰富的读者更要如此。本书先介绍了有关Kubernetes 的术语和概念,随着话题的深入,它们将贯穿本书的其余部分。以下是本书的组织结构。
第 1 章 云原生数据基础设施:持久化、流式传输与批量分析
本章阐述了通过在 Kubernetes 上运行无状态工作负载和有状态工作负载来实现云原生应用现代化的目标。读者应该从该章节开始阅读,因为其中定义了关键的目标和术语,为所有读者提供了一致的环境。具体来说,本章介绍了云原生数据的定义,并给出了云原生数据基础设施准则,本书的其余部分将使用这些准则来衡量有关技术。
第 2 章 通过 Kubernetes 管理数据存储
本章探讨了 Kubernetes 上数据基础设施的基本领域之一 :存储。本章从存储在容器化系统中的工作方式开始介绍,首先以 Docker 为例介绍,然后转向 Kubernetes 及其 PV 子系统。本章讨论了各种可用的存储类型,包括文件、块和对象存储,以及如何权衡使用本地和远程存储解决方案。
第 3 章 打造 Kubernetes 数据库
本章介绍了 Kubernetes 的计算资源,如 Pod、Deployments 和 StatefulSet,并引导读者逐步完成使用这些资源部署数据库,如部署 MySQL 和 Apache Cassandra 的过程。通过学习本章,读者将了解 StatefulSet 在管理分布式数据库方面的优势和劣势。
第 4 章 通过 Helm 在 Kubernetes 上自动部署数据库
本章延续上一章的主题,重新回顾了在 Kubernetes 上部署 MySQL 和 Cassandra 的过程,此次是通过 Helm 包管理器以更自动化的方式进行的。通过学习本章,读者还将了解有助于配置的 Kubernetes 资源,包括 ConfigMap 和 Secret。本章还介绍了Helm 在整个 DevOps 流程和 CI/CD 工具集中的作用,以及 Helm 在管理数据库操作
方面的一些缺点。
第 5 章 通过 Operator 自动管理 Kubernetes 数据库
本章通过介绍 Operator 模式和演示如何使用 Operator 帮助管理日常的数据库操作来总结数据库的部署步骤。本章以 Vitess(MySQL)和 Cass Operator(Apache Cassandra)为例,阐述了 Operator 是如何扩展 Kubernetes 控制平面并管理数据库的。通过学习本章,读者将了解如何评估 Operator 的成熟度,学习如何使用 Operator SDK 等构建自己的 Operator。
第 6 章 在 Kubernetes 上集成数据基础设施
本章开始将关注点从部署和操作数据库扩展到把数据库和其他数据基础设施整合到整个应用技术栈中。本章研究了一个名为 K8ssandra 的项目,它集成了 Apache Cassandra,以及用于管理监控、安全和数据库备份的工具,并提供了一个 API 层用于轻松访问的数据。
第 7 章 Kubernetes 原生数据库
本章总结了本书前半部分有关云原生数据管理的知识,并运用这些知识来讨论“什么是 Kubernetes 原生数据库”。这不仅仅是关于行业流行语的讨论,对选择数据基础设施和开发该数据基础设施的人来说,这一讨论也很重要。
第 8 章 Kubernetes 数据流式传输
本章从流式传输开始,研究其余数据基础设施。云原生应用中数据的移动和处理同数据库持久化一样普遍,但需要不同的部署策略 :安全地连接端点并构建默认的自愈性和弹性。本章使用了 Apache Pulsar 和 Apache Flink 来演示这些重要实践。
第 9 章 Kubernetes 数据分析
讽刺的是,对大规模分析部署的需求只是现如今 Kubernetes 方法论的起源故事中的一部分,即编排和资源管理。环顾四周,在 Kubernetes 上运行分析任务是现在许多机构的首要任务。本章强调了 Apache Spark 中的差异点,为介绍用例提供了良好的开端,并通过 Dask 和 Ray 项目介绍了 Kubernetes 上数据分析的最新进展。
第 10 章 机器学习及其他新兴用例
目前有关人工智能和机器学习的话题已处于数据基础设施领域的前沿位置。可以考虑将过去研发出的项目运行到 Kubernetes 上,这一举措十分有价值。当然,还有其他类型的项目选用了云原生技术,并为数据未来指明了方向。本章旨在调查这些项目,集思广益,为云原生数据提供帮助。
第 11 章 将数据工作负载迁移到 Kubernetes 上
如果不付诸实践,那么对本书的学习将变为徒劳。本章强调了前几章的关键内容,并提供了一个关于人员、流程和技术变革的框架,用它来协助将有状态工作负载成功地迁移到 Kubernetes 上。此外,本章展望了组织机构的数据基础设施在不久的将来可能的形态。
在 Kubernetes 上管理数据是一个新兴课题,某些领域会发生巨大改变。就像任何技术图书一样,本书在特定时间点(2022 年年末)总结了可以参考的相关知识。
事实上,针对一个快速发展的主题撰写一本书是极具挑战的,这是因为很难保障信息的时效性。为了更好地应对这一处境,本书采取这样一种模式 :在提供大量示例的同时强调基础知识。随着内容的深入,本书研究的技术将显得越来越不成熟。在此,希望读者紧扣核心要义并将其应用于每个单独的用例,而不是照搬照抄或寻找“万能解”。
特别地,由于第 2 章至第 5 章中的内容涉及的主题已经非常成熟,所以在这些章节中会提供更深入的阐述和实战示例。而第 8 章至第 10 章介绍的数据基础设施还在不断地演进中,至少在 Kubernetes 部署方面是如此。对于这种情况,本书将提供更多的第三方学习资源,以确保读者了解最新进展。本书的初衷是鼓励读者与他人分享发现的新资源,以更好地一同进步。

目录

序....................................................................................xv
前言................................................................................xix
第 1 章 云原生数据基础设施 :持久化、流式传输与批量分析.............. 1
基础设施类型 ................................................................................................................2
云原生数据是什么 .........................................................................................................3
数据基础设施越多,问题越多 ......................................................................................5
Kubernetes 引领潮流......................................................................................................6
Kubernetes 计算管理 ..............................................................................................7
Kubernetes 网络管理 ..............................................................................................8
Kubernetes 存储管理 ..............................................................................................8
云原生数据组件 .............................................................................................................9
迎接变革 ...................................................................................................................... 11
采用 SRE 思维方式 .............................................................................................. 11
遵循云原生数据基础设施准则 ............................................................................. 13
小结 ............................................................................................................................. 15
第 2 章 通过 Kubernetes 管理数据存储................................... 16
Docker,容器和状态 ................................................................................................... 16
在 Docker 中管理状态 .......................................................................................... 17
ix
绑定挂载 .............................................................................................................. 18
卷 ......................................................................................................................... 19
Tmpfs 挂载 ........................................................................................................... 20
卷驱动程序........................................................................................................... 20
Kubernetes 数据存储资源 ............................................................................................ 22
Pod 和卷 ............................................................................................................... 22
PV ........................................................................................................................ 28
PVC ...................................................................................................................... 32
StorageClass ......................................................................................................... 35
Kubernetes 存储架构.................................................................................................... 37
Flexvolume ........................................................................................................... 37
CSI ....................................................................................................................... 38
CAS ...................................................................................................................... 40
COSI .................................................................................................................... 42
小结 ............................................................................................................................. 44
第 3 章 打造 Kubernetes 数据库........................................... 45
困难模式 ...................................................................................................................... 45
在 Kubernetes 上运行数据基础设施的前提 ................................................................. 46
在 Kubernetes 上运行 MySQL ..................................................................................... 47
ReplicaSet .................................................................................................................... 48
Deployment .......................................................................................................... 49
Service .................................................................................................................. 53
访问 MySQL......................................................................................................... 56
在 Kubernetes 上运行 Apache Cassandra ..................................................................... 58
StatefulSet ............................................................................................................ 60
访问 Cassandra ..................................................................................................... 70
小结 ............................................................................................................................. 72
第 4 章 通过 Helm 在 Kubernetes 上自动部署数据库.................. 73
通过 Helm Chart 部署应用 ........................................................................................... 74
通过 Helm 部署 MySQL .............................................................................................. 75
Helm 的工作方式 ................................................................................................. 78
Label .................................................................................................................... 80
ServiceAccount ..................................................................................................... 81
Secret.................................................................................................................... 81
ConfigMap ............................................................................................................ 82
更新 Helm Chart ................................................................................................... 84
卸载 Helm Chart ................................................................................................... 85
使用 Helm 部署 Apache Cassandra .............................................................................. 85
亲和性与反亲和性 ............................................................................................... 87
Helm、CI/CD 及 Operator .................................................................................... 90
小结 ............................................................................................................................. 92
第 5 章 通过 Operator 自动管理 Kubernetes 数据库...................93
扩展 Kubernetes 控制平面 ........................................................................................... 94
扩展 Kubernetes 客户端 ....................................................................................... 94
扩展 Kubernetes 主节点组件 ................................................................................ 95
扩展 Kubernetes 工作节点组件 ............................................................................ 96
Operator 模式 ............................................................................................................... 97
控制器 .................................................................................................................. 97
自定义资源........................................................................................................... 99
Operator ............................................................................................................. 101
使用 Vitess Operator 管理 Kubernetes MySQL .......................................................... 103
Vitess 概述 ......................................................................................................... 103
PlanetScale Vitess Operator ................................................................................ 106
不断发展的 Operator 生态体系 .................................................................................. 116
选择 Operator ..................................................................................................... 116
构建 Operator ..................................................................................................... 119
小结 ........................................................................................................................... 121
第 6 章 在 Kubernetes 上集成数据基础设施............................ 123
K8ssandra:生产就绪的 Kubernetes 上的 Cassandra ................................................. 123
K8ssandra 架构 ................................................................................................... 124
安装 K8ssandra Operator .................................................................................... 125
创建 K8ssandraCluster ....................................................................................... 128
使用 Cass Operator 在 Kubernetes 上管理 Cassandra ................................................. 130
使用 Stargate API 提高开发人员的工作效率 ............................................................. 134
基于 Prometheus 和 Grafana 的统一监控基础设施 .................................................... 136
使用 Cassandra Reaper 进行修复 ............................................................................... 140
使用 Cassandra Medusa 进行数据备份与恢复 ........................................................... 142
创建备份 ............................................................................................................ 143
备份恢复 ............................................................................................................ 144
在 Kubernetes 上部署多集群应用 .............................................................................. 145
小结 ........................................................................................................................... 151
第 7 章 Kubernetes 原生数据库.......................................... 152
为什么需要 Kubernetes 原生方式 .............................................................................. 152
使用 TiDB 进行大规模混合数据访问 ........................................................................ 154
TiDB 架构 .......................................................................................................... 155
在 Kubernetes 上部署 TiDB................................................................................ 157
配置 DataStax Astra DB 的无服务器 Cassandra ......................................................... 165
在 Kubernetes 原生数据库中寻找什么....................................................................... 172
基本要求 ............................................................................................................ 172
Kubernetes 原生技术的未来 ............................................................................... 174
小结 ........................................................................................................................... 176
第 8 章 Kubernetes 数据流式传输........................................ 177
流式传输简介 ............................................................................................................ 177
传输类型 ............................................................................................................ 178
传输保证 ............................................................................................................ 179
功能范围 ............................................................................................................ 180
流式传输在 Kubernetes 上的作用 .............................................................................. 181
通过 Apache Pulsar 在 Kubernetes 上实现流式传输 .................................................. 183
准备环境 ............................................................................................................ 186
使用 cert-manager 配置默认的安全通信 .................................................................... 188
通过 Helm 部署 Apache Pulsar ........................................................................... 192
通过 Apache Flink 进行流分析 .................................................................................. 192
在 Kubernetes 上部署 Apache Flink ................................................................... 195
小结 ........................................................................................................................... 197
第 9 章 Kubernetes 数据分析.............................................198
数据分析简介 ............................................................................................................ 199
在 Kubernetes 上部署分析工作负载 .......................................................................... 200
Apache Spark 简介 ..................................................................................................... 203
在 Kubernetes 上部署 Apache Spark .......................................................................... 204
构建自定义容器 ................................................................................................. 206
提交并运行应用 ................................................................................................. 206
Apache Spark 专用的 Kubernetes Operator ................................................................ 207
Kubernetes 调度器替代品 .......................................................................................... 210
Apache YuniKorn ................................................................................................ 212
Volcano ............................................................................................................... 214
Kubernetes 专用分析引擎 .......................................................................................... 217
Dask ................................................................................................................... 219
Ray ..................................................................................................................... 221
小结 ........................................................................................................................... 223
第 10 章 机器学习及其他新兴用例..........................................224
云原生 AI/ML 技术栈 ................................................................................................ 224
AI/ML 定义 ........................................................................................................ 225
定义 AI/ML 技术栈 ............................................................................................ 227
使用 KServe 进行实时模型服务 ......................................................................... 228
使用 Feast 进行特征的全生命周期管理 ............................................................. 231
使用 Milvus 进行向量相似度搜索 ..................................................................... 234
使用 Apache Arrow 实现高效的数据移动 .................................................................. 236
使用 lakeFS 管理对象存储的版本 ............................................................................. 239
小结 ........................................................................................................................... 242
第 11 章 将数据工作负载迁移到 Kubernetes 上........................244
愿景:应用感知平台 ................................................................................................. 244
描绘成功的蓝图 ......................................................................................................... 246
人员 .................................................................................................................... 247
技术 .................................................................................................................... 250
流程 .................................................................................................................... 256
云原生数据的未来 ..................................................................................................... 261
小结 ........................................................................................................................... 264
关于作者..........................................................................266
关于封面..........................................................................266

读者评论