Skip to main content

用 Helm 在 Kubernetes 中部署 RisingWave 集群

本章将指导您通过 Helm 在单个 Kubernetes 集群中部署 RisingWave。

开始之前

  • 请确保您的环境中安装了 Helm 3.7 或更高版本。有关如何安装 Helm 的详细信息,请参见 Helm 文档
  • 请确保您的环境中安装了 Kubernetes 1.24 或更高版本。
  • 请确保您为部署分配了足够的资源,并使用了 etcd 推荐的磁盘。详细信息,请参见 硬件要求

步骤 1:启动 Kubernetes

启动 Kubernetes 集群。有关启动 Kubernetes 集群的详细信息,请参见 Kubernetes 的 入门指南

步骤 2:启动 RisingWave

现在,我们用 Helm 启动 RisingWave 集群。

  1. 添加 risingwave 图表仓库:
helm repo add risingwavelabs https://risingwavelabs.github.io/helm-charts/
  1. 更新您的 Helm 图表仓库,以请确保您正在使用 RisingWave Helm Chart :
helm repo update

如果您使用 AWS EKS,还需要将其设置为 Helm 的默认集群:

aws eks update-kubeconfig --name <your_eks_cluster_name>
  1. 可选:您可以通过编辑 values.yml 文件来自定义 RisingWave 部署的配置。

  2. 安装最新的 RisingWave Helm Chart:

helm install --set wait=true <my-risingwave> risingwavelabs/risingwave

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

如果您想要安装特定版本,可以通过 image-tag 属性指定版本。例如:

helm install --set wait=true --set image.tag=v1.2.0 <my-risingwave> risingwavelabs/risingwave

您可能会得到这样的输出消息:

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

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

kubectl 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-etcd-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

步骤 3:访问 RisingWave

默认情况下,RisingWave Helm Chart 将部署一个 ClusterIP 服务,实现集群内通信。

部署完成后,您可以通过以下方式将本地机器的端口 4567 转发到服务的端口:

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

然后,您可以使用 PostgreSQL 客户端在端口 4567 上连接到 RisingWave。例如:

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

您可以使用监控堆栈监控 RisingWave 集群。详情请见 监控 RisingWave 集群

可选:自定义您的 RisingWave 部署

在安装或升级期间,您可以通过提供配置文件 values.yml 来自定义您的 RisingWave 部署。注意,在指定该文件之前,您需要先编辑完该文件。

要在安装期间自定义部署,请改为运行此命令:

helm install --set wait=true -f values.yml <my-risingwave> risingwavelabs/risingwave

要在升级期间自定义部署,请改为运行此命令:

helm upgrade -f values.yml --reuse-values <my-risingwave> risingwavelabs/risingwave

--reuse-values 选项能够确保之前的配置被保留,并且只有您提供的配置被应用。

一个典型的 values.yml 看起来像这样:

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

要查看您的 RisingWave 集群的用户指定配置,请运行以下命令:

helm get values my-risingwave

输出结果将类似:

USER-SUPPLIED VALUES:
compactorComponent:
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 100m
memory: 64Mi

调整节点大小

通过配置 values.yml,您可以调整工作节点的大小。Compactor 节点的配置在 compactorComponent 部分。Meta 节点和 Compute 节点的配置则分别在 metaComponentcomputeComponent 部分。

# 要调整其他类型的节点大小,请将名称替换为 
# computeComponent 或 metaComponent。
compactorComponent:
resources:
# Pod 可以使用的最大 CPU 和内存。
limits:
cpu: 1
memory: 2Gi
# Pod 至少拥有的最小 CPU 和内存量。
requests:
# 0.1 核
cpu: 100m
memory: 64Mi

请注意,增加 CPU 资源并不会自动增加现有物化视图的并行度。当扩展 Compute 节点(增加更多 CPU 核心)时,您应该按照集群扩展中的指令进行扩展。

自定义状态后端

默认情况下,RisingWave Helm Chart 使用 MinIO 作为默认的状态后端。如果要使用其他选项作为状态后端,您可以编辑 values.yml 文件。

例如,如果您打算使用 AWS S3 作为状态后端,您可以按照以下方式修改配置:

tags:
minio: false

stateStore:
minio:
enabled: false

s3:
enabled: true
region: <your aws region, e.g, “ap-southeast-1”>
bucket: <your bucket name>
authentication:
useServiceAccount: false
accessKey: <your access key>
secretAccessKey: <your secret access key>