Helm 笔记|用 Helm 在 Kubernetes 中部署 RisingWave 集群

114 阅读4分钟

本文将分享如何通过 Helm 在单个 Kubernetes 集群中部署 RisingWave。

1. 先决条件

  • 确保环境中已安装 Helm 3.7 或更高版本。有关如何安装 Helm 的详细信息,请参阅 Helm 文档
  • 确保环境中已安装 Kubernetes 1.24 或更高版本。
  • 确保为部署分配了足够的资源,有关详情,请参阅硬件要求

2. 启动 Kubernetes

启动一个 Kubernetes 集群。有关如何启动请参阅 Kubernetes 入门指南

3. 启动 RisingWave

现在使用 Helm 启动 RisingWave 集群。首先,添加 RisingWave Helm chart 仓库:

helm repo add risingwavelabs https://risingwavelabs.github.io/helm-charts/ --force-update

更新你的 Helm chart 仓库,确保你使用的是最新的 RisingWave Helm chart:

helm repo update

如果你使用 AWS EKS,还需要更新 Kubectl 和 Helm 的本地配置以访问 EKS 集群:

aws eks update-kubeconfig --name <your_eks_cluster_name>

创建 RisingWave 命名空间。建议为 RisingWave 资源创建一个专用的命名空间。

kubectl create namespace risingwave

通过编辑 values.yml 文件自定义 RisingWave 部署配置。

  • 自定义元数据存储:RisingWave 的元数据存储包含集群操作的元数据。查看配置了解所有可用选项和示例了解元数据存储的详细用法。
  • 自定义状态存储:RisingWave 的状态存储是一个容错存储系统,用于保存系统状态。查看配置了解所有可用选项和示例了解状态存储的详细用法。
  • 捆绑 PostgreSQL 和 MinIO:如果你想使用 PostgreSQL 作为元数据存储,使用 MinIO作为状态存储,RisingWave 的 Helm chart 提供了将它们捆绑在一起的选项。这使得 Helm chart 的设置快速简单。查看配置获取更多详细信息。要启用此功能,请设置 tags.bundle=true

注意:在使用捆绑的 PostgreSQL 和 MinIO 以及任何本地存储之前,确保你已实施了动态卷配置(Dynamic Volume Provisioning)。

安装最新的 RisingWave Helm chart:

helm install -n risingwave --create-namespace --set wait=true -f values.yaml <my-risingwave> risingwavelabs/risingwave

其中 <my-risingwave> 是你为 RisingWave 部署选择的发布名称。此命令将安装最新的稳定版本的 RisingWave。

如果你想安装特定版本,可以通过 image-tag 属性指定版本。记得将 <version_number> 替换为所需版本,例如 v1.7.0。

helm install -n risingwave --create-namespace --set wait=true --set image.tag=<version_number> <my-risingwave> -f values.yaml risingwavelabs/risingwave

你可能会看到如下输出信息:

NAME: my-risingwave
LAST DEPLOYED: Wed Aug 16 15:35:19 2023
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

使用以下命令检查部署状态:

kubectl -n risingwave get pods -l app.kubernetes.io/instance=<my-risingwave>

当状态如下所示时,表示 RisingWave 集群成功启动:

NAME                                   READY   STATUS    RESTARTS        AGE
risingwave-compactor-8dd799db6-hdjjz   1/1     Running   1 (8m33s ago)   11m
risingwave-compute-0                   2/2     Running   0               11m
risingwave-PostgreSQL-0                1/1     Running   0               11m
risingwave-frontend-7bd7b8c856-czdgd   1/1     Running   1 (8m33s ago)   11m
risingwave-meta-0                      1/1     Running   0               11m
risingwave-minio-5cfd8f5f64-6msqm      1/1     Running   0               11m

4. 访问 RisingWave

默认情况下,RisingWave Helm chart 将部署一个 ClusterIP 服务,启用集群内部通信。

部署后,你可以通过以下命令将本地机器的 4567 端口转发到服务端口:

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

然后你可以通过 PostgreSQL 客户端连接到 RisingWave,端口为 4567。例如:

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

你可以使用监控栈监控 RisingWave 集群。有关详情请参阅监控 RisingWave 集群

5. 调整节点大小(可选)

通过编辑 values.yml 文件中的配置,可以调整工作节点的大小。compactorComponent 部分包含压缩节点的配置。元数据节点和计算节点的配置分别位于 metaComponent 和 computeComponent 部分。有关详情,请参阅自定义不同组件的 pod

示例:

compactorComponent:
  resources:
    limits:
      cpu: 1
      memory: 2Gi
    requests:
      cpu: 100m
      memory: 64Mi

请注意,增加 CPU 资源不会自动增加现有物化视图的并行度。扩展计算节点时,应遵循集群扩展指南 进行扩展。

6. 关于 RisingWave

RisingWave 是一款开源的分布式流处理数据库,旨在帮助用户降低实时应用的开发成本。RisingWave 采用存算分离架构,提供 Postgres-style 使用体验,具备比 Flink 高出 10 倍的性能以及更低的成本。

👨‍🔬加入 RW 社区,欢迎关注公众号:RisingWave中文开源社区

🧑‍💻想要了解和探索 RisingWave,欢迎浏览我们的官网:risingwave.com/

🔧快速上手 RisingWave,欢迎体验入门教程:github.com/risingwave

💻深入理解使用 RisingWave,欢迎阅读用户文档:zh-cn.risingwave.com/docs