​分分钟教你在阿里云 K8s 上部署流数据库 RisingWave

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 本文主要介绍如何在阿里云【容器服务 Kubernetes 版 ACK】上部署 RisingWave 集群。RisingWave当前提供单机试玩模式,以及基于 K8s 的分布式部署模式,生产中我们只推荐后者。K8s 虽然上手门槛高,但只需按照本篇文章的步骤依次操作,你依然能轻松驾驭一个生产集群。

本文主要介绍如何在阿里云【容器服务 Kubernetes 版 ACK】上部署 RisingWave 集群。RisingWave当前提供单机试玩模式,以及基于 K8s 的分布式部署模式,生产中我们只推荐后者。K8s 虽然上手门槛高,但只需按照本篇文章的步骤依次操作,你依然能轻松驾驭一个生产集群。


安装组件

这里首先介绍一个成功部署的 RisingWave 集群在 K8s 上会运行哪些组件:

> kubectl get pods -l app.kubernetes.io/instance=my-risingwave
NAME                                       READY   STATUS    RESTARTS       AGE
my-risingwave-compactor-5c4469c979-njqmd   1/1     Running   1 (107s ago)   2m49s
my-risingwave-compute-0                    2/2     Running   1 (106s ago)   2m49s
my-risingwave-etcd-0                       1/1     Running   0              2m49s
my-risingwave-frontend-7d85dd748b-9hft6    1/1     Running   1 (107s ago)   2m49s
my-risingwave-meta-0                       1/1     Running   0              2m49s
my-risingwave-minio-649b57ddcc-xrvft       1/1     Running   0              2m49s
  • Compactor:负责数据的清理及压缩。在生产中 Compactor 的运行很大程度影响了流计算的性能。
  • Compute:负责流计算以及状态维护等。
  • Etcd:负责元数据存储。
  • Frontend:负责响应用户的 SQL 请求。
  • Meta:用于集群的元信息管理,包括节点健康状态,数据库对象信息,流计算快照点(Checkpoint)的维护等。
  • MinIO(可选):兼容 S3 的对象存储。如用户部署在诸如阿里云,腾讯云等云厂商上,则可直接使用云厂商提供的对象存储服务,无需安装 MinIO。


阿里云 ACK 服务配置

用户在购买及配置阿里云 ACK 服务时,基本可以完全采用默认项。

但需注意,为了稳定流畅运行,RisingWave 对生产中的机器规格有一定要求。具体可参考官方文档 Hardware requirements。这里建议用户购买高于文档中推荐配置的阿里云机型。

除去对 CPU 和内存的要求外,RisingWave 也建议用户选择相对较快的本地磁盘存储以搭配 etcd,避免生产中由于 etcd 的服务异常导致整个集群故障。这里具体的操作如下:

  1. 查询当前K8s中已存在的存储类。阿里云提供数个存储类可供选择(参考),具体如下:
> kubectl get storageclass
NAME                             PROVISIONER                       RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
alicloud-disk-available          diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-efficiency         diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-essd               diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-ssd                diskplugin.csi.alibabacloud.com   Delete          Immediate              true                   5h37m
alicloud-disk-topology           diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   5h37m
alicloud-disk-topology-alltype   diskplugin.csi.alibabacloud.com   Delete          WaitForFirstConsumer   true                   5h37m
  1. 我们直接将 alicloud-disk-essd 设置为默认存储类:
> kubectl annotate storageclass alicloud-disk-essd storageclass.kubernetes.io/is-default-class=true
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"alicloud-disk-ssd"},"parameters":{"type":"cloud_ssd"},"provisioner":"diskplugin.csi.alibabacloud.com","reclaimPolicy":"Delete"}
    storageclass.kubernetes.io/is-default-class: "true"
  1. 请在 metadata → annotations 的子项中加上 storageclass.kubernetes.io/is-default-class: "true",这将会设置该存储类为默认。这意味着它会自动购买并挂载阿里云ESSD云盘


集群安装

接着按照 RisingWave Helm 部署文档 的步骤来进行安装部署即可。需注意的是,该流程要求使用 Helm 3.7+ 版本,而**阿里云 CloudShell** 所预装的 Helm 版本仅为 3.5,因此我们不建议通过CloudShell来执行操作。

  1. 首先安装 RisingWave 的 Helm Chart
helm repo add risingwavelabs <https://risingwavelabs.github.io/helm-charts/>
  1. 确保你正在使用最新的 Helm Chart
helm repo update
  1. 注意!!:本地编辑 values.yml 文件并配置 etcd 的存储空间为 20GB。这是因为阿里云不允许申请小于 20GB 的块存储。
etcd:
  persistence:
    size: 20Gi
  1. 本地编辑 values.yml 并配置后端存储为**阿里云 OSS 对象存储服务**。请按注释正确填入:
tags:
  minio: false
stateStore:
  minio:
    enabled: false
  oss:
    enabled: true
    region: # OSS 地域,如 cn-beijing
    bucket: # OSS bucket name
    root: risingwave
    useInternalEndpoint: false
    authentication:
      useServiceAccount: false
      # 具体请参考 <https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair>
      accessKey: # 阿里云 Access Key
      secretKey: # 阿里云 Secret Key
  1. 通过 Helm 安装 RisingWave 集群:
helm install --set wait=true -f values.yml my-risingwave risingwavelabs/risingwave
  1. 你可以将 my-risingwave 替代为任何其他合法名字。
  2. 确认 RisingWave 是否已被成功安装。往往完成安装需花费 3-5 分钟。
> kubectl get pods -l app.kubernetes.io/instance=my-risingwave
NAME                                      READY   STATUS    RESTARTS        AGE
my-risingwave-compactor-8dd799db6-hdjjz   1/1     Running   1 (8m33s ago)   11m
my-risingwave-compute-0                   2/2     Running   0               11m
my-risingwave-etcd-0                      1/1     Running   0               11m
my-risingwave-frontend-7bd7b8c856-czdgd   1/1     Running   1 (8m33s ago)   11m
my-risingwave-meta-0                      1/1     Running   0               11m


访问集群

K8s 提供多种网络访问模式,分别为:

  • ClusterIP
  • NodePort
  • LoadBalancer

RisingWave 默认采用 ClusterIP,即仅允许同一K8s集群内的服务之间相互联通

为便于测试和开发,用户可以借 API Server 路由来访问  RisingWave:

kubectl port-forward svc/my-risingwave 4567:svc

随后用户即可通过psql或其他Postgres客户端来访问 RisingWave:

psql -h localhost -p 4567 -d dev -U root


卸载集群

如要完整下线该 RisingWave 集群,您需要执行以下操作:

  1. 下线所有的 Pod
helm uninstall my-risingwave
  1. 删除所有的 存储卷(PersistenVolume)
kubectl delete pvc -l app.kubernetes.io/instance=my-risingwave
  1. 参考 OSS 文档 删除 OSS 中的数据
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
6月前
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
272 0
|
4月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
555 2
|
10月前
|
数据库
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
【YashanDB知识库】数据库一主一备部署及一主两备部署时,主备手动切换方法及自动切换配置
|
10月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
706 0
|
8月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
467 18
【赵渝强老师】数据库不适合Docker容器化部署的原因
|
9月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
10月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
967 33
|
10月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
610 19

推荐镜像

更多