用 Helm 在 Kubernetes 中部署 RisingWave 集群
本章将指导您通过 Helm 在单个 Kubernetes 集群中部署 RisingWave。
开始之前
- 请确保您的环境中安装了 Helm 3.7 或更高版本。有关如何安装 Helm 的详细信息,请参见 Helm 文档。
- 请确保您的环境中安装了 Kubernetes 1.24 或更高版本。
- 请确保您为部署分配了足够的资源,并使用了 etcd 推荐的磁盘。详细信息,请参见 硬件要求。
步骤 1:启动 Kubernetes
启动 Kubernetes 集群。有关启动 Kubernetes 集群的详细信息,请参见 Kubernetes 的 入门指南。
步骤 2:启动 RisingWave
现在,我们用 Helm 启动 RisingWave 集群。
- 添加
risingwave
图表仓库:
helm repo add risingwavelabs https://risingwavelabs.github.io/helm-charts/
- 更新您的 Helm 图表仓库,以请确保您正在使用 RisingWave Helm Chart :
helm repo update
如果您使用 AWS EKS,还需要将其设置为 Helm 的默认集群:
aws eks update-kubeconfig --name <your_eks_cluster_name>
可选:您可以通过编辑
values.yml
文件来自定义 RisingWave 部署的配置。安装最新的 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 节点的配置则分别在 metaComponent
和 computeComponent
部分。
# 要调整其他类型的节点大小,请将名称替换为
# 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>