KubeCon NA 2023: Kubernetes 存储平台运行实时分析数据库

Kubernetes 存储平台在实时分析数据库中的应用

在 2023 年 KubeCon + CloudNativeCon 北美会议上,Altinity 公司的 CEO Robert Hodges 发表了题为《数据冒险:依赖 Kubernetes 存储运行数百个实时分析数据库》的演讲。他分享了其团队如何利用 Kubernetes (K8s) 存储平台构建数据解决方案,并讨论了相关技术和挑战。

主要内容

ClickHouse 数据库简介

Hodges 首先介绍了开源的实时分析数据库 ClickHouse。该数据库采用列式存储设计,基于无共享架构,可在裸金属或云基础设施上运行。ClickHouse 支持查询的并行和向量化执行,并具备复制、分片和分布式查询执行等分布式数据库功能。

Kubernetes 上的数据库部署

团队通过编写 Altinity ClickHouse Operator 将 ClickHouse 映射到 Kubernetes 平台。ClickHouse Server 作为 Docker 镜像运行,数据库组件通过 StatefulSets 在 Kubernetes 中表示,数据则存储在 AWS 的 Elastic Block Store (EBS) 上。Hodges 还分享了在 Kubernetes 上运行数据库时遇到的一些挑战,例如数据库副本在不同可用区 (AZ)、资源和软件版本上运行不对称,以及多样化的数据访问需求(读/写与只读)。

存储与计算的分离

团队通过为每个数据库服务器使用 StatefulSet 来映射资源,并创建不同的 podTemplate 值以按区域划分 Pod,同时使用 volumeClaimTemplate 确保所有 Pod 具有相同的存储规格。这种设计使得服务器能够精确映射到虚拟机和存储。

Hodges 还分享了存储性能统计数据,比较了使用 NVMe SSD 的 i3.4xlarge 虚拟机服务器与使用 EBS 的 m6i.4xlarge 虚拟机实例的性能。结果显示,在缓存查询响应方面,EBS 在所有查询中均表现更快,尤其是在内存读取和时钟速度方面,这使得 EBS 成为数据库集群背后更好的存储选择。这些性能测试通过 ClickBench 工具进行。

Kubernetes 的优势与技巧

Kubernetes 的另一个优势是支持存储与计算的分离。使用类似 EBS 的解决方案,可以独立扩展计算和存储资源。Hodges 还讨论了 Kubernetes 的一些组件和技巧,例如使用 Node Selector反亲和性 来避免与其他服务的冲突,以及通过将 StatefulSet 的副本数设置为零来关闭计算资源,同时保持存储资源的活动状态。

此外,团队还开发了 Altinity EBS Params Controller,用于通过自定义注解批量修改存储卷,并在不重启系统的情况下扩展块存储。

总结与经验教训

Hodges 总结了使用 Kubernetes 存储运行云端分析数据库的经验教训:

  1. Kubernetes 是运行数据库的理想平台,能够在多种环境中(如不同云平台、本地 Minikube 或数百个节点的集群)实现可移植性。
  2. 性能测试至关重要,因为性能取决于数据库用例和数据访问模式。
  3. Kubernetes 与云块存储结合 提供了存储与计算的分离。
  4. 利用 Kubernetes 技巧(如自定义控制器)直接管理存储资源。

更多关于 KubeCon NA 2023 的信息,可访问会议 官网日程安排

阅读 26
0 条评论