在 Kubernetes 集群中升级 RisingWave
本文将介绍如何使用 RisingWave Kubernetes Operator 和 Helm 在 K8s deployment 中升级 RisingWave。
caution
升级 RisingWave 时,请注意可能存在重大变更。如果升级 RisingWave 到生产环境中遇到任何技术支持问题,请随时与我们联系。
note
假设 Kubernetes 的 namespace 为 default
,如果您的 RisingWave 集群部署在其他 namespace 中,请在下方的kubectl
和 helm
命令中添加-n <namespace>
参数,再将 <namespace>
替换成自己的 namespace。
使用 Helm 升级 RisingWave
检查当前 RisingWave Helm 的状态。
helm list -f <risingwave-cluster>
预期输出:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
risingwave default 21 2023-09-20 13:20:58.389424056 +0000 UTC deployed risingwave-0.1.16 v1.3.0更新已配置的 Helm 图表仓库中可用图表(软件包)的本地缓存:
helm repo update
检查 RisingWave Helm 图表的可用版本:
helm search repo risingwavelabs/risingwave -l
ExampleNAME CHART VERSION APP VERSION DESCRIPTION
risingwavelabs/risingwave 0.1.16 v1.1.3 The distributed streaming database SQL stream p...
risingwavelabs/risingwave 0.1.15 v1.1.2 The distributed streaming database SQL stream p...
risingwavelabs/risingwave 0.1.14 v1.1.1 The distributed streaming database SQL stream p...升级 RisingWave,可以升级到最新版本或特定版本。
升级到最新版本:
helm upgrade --reuse-values my-risingwave risingwavelabs/risingwave
升级到特定版本:
helm upgrade --set image.tag={risingwave-version} \
-f values.yaml \
--reuse-values \
--version {chart-version} \
my-risingwave risingwavelabs/risingwave
使用 Operator 升级 RisingWave
记得将所有 <risingwave-cluster>
替换为实际对象名称。
检查当前 RisingWave 集群的状态。
kubectl get risingwave <risingwave-cluster>
预计输出:
NAME META STORE STATE STORE VERSION RUNNING AGE
risingwave Etcd S3 v1.3.0 True 2m20s升级镜像版本。记得将
<target-version>
替换为目标镜像版本。kubectl patch risingwave <risingwave-cluster> --type='merge' -p '{"spec": {"image": "ghcr.io/risingwavelabs/risingwave:<target-version>"}}'
等待重新创建所有的 Pods,
Upgrading
条件变为False
或为空。kubectl wait --for=condition=Upgrading=false risingwave/<risingwave-cluster>
如果等待超时,请检查 Pods 是否正常运行。
- 如果任何 Pods 处于暂停或非运行状态,可能需要首先进行故障排除,查看 Pod 本身是否存在问题。可能的问题包括未找到镜像或未调度 Pod 操作。
- 如果 meta Pod 未运行,请提交带有日志的问题,并按照以下说明回滚。
- 如果 meta Pod 正在运行但其他 Pods 未运行,请等待一分钟,看之后是否运行。请提交带有日志的问题,并按照以下说明回滚。
kubectl get pods -l risingwave/name=<risingwave-cluster>
预期输出:
NAME READY STATUS RESTARTS AGE
risingwave-compactor-5cfcb469c5-gnkrp 1/1 Running 2 (1m ago) 2m35s
risingwave-compute-0 1/1 Running 2 (1m ago) 2m35s
risingwave-frontend-86c948f4bb-69cld 1/1 Running 2 (1m ago) 2m35s
risingwave-meta-0 1/1 Running 1 (1m ago) 2m35s
在必要时回滚
如果出现任何问题且在一定时间内无法解决,请使用以下命令回滚升级,记得将 <version-before>
替换为升级之前使用的镜像版本。验证回滚的其他步骤与升级相同。
kubectl patch risingwave <risingwave-cluster> --type='merge' -p '{"spec": {"image": "ghcr.io/risingwavelabs/risingwave:<version-before>"}}'