使用 NebulaGraph Operator 升级 悦数图数据库 集群版本
本文介绍如何使用 NebulaGraph Operator 在 Kubernetes 环境中升级 悦数图数据库 集群的版本。
:::compatibility 历史版本兼容性
1.x 版本的 NebulaGraph Operator 不兼容 3.x 以下版本的 NebulaGraph。
:::
使用限制
-
只支持升级使用 NebulaGraph Operator 创建的 悦数图数据库 集群。
-
只支持升级 悦数图数据库 3.5.0 至 3.6.0 版本。
-
如需升级 悦数图数据库 企业版,联系我们。
前提条件
已创建 悦数图数据库 集群。具体步骤,参见创建 悦数图数据库 集群。
使用kubectl升级 悦数图数据库 集群
本示例中待升级的 悦数图数据库 版本为 3.5.0。
- 查看集群中服务的镜像版本。
kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c
返回示例:
1 vesoft/nebula-graphd:v3.5.0
1 vesoft/nebula-metad:v3.5.0
3 vesoft/nebula-storaged:v3.5.0
-
编辑
nebula集群配置,将集群服务的version的值从 3.5.0 修改至 v3.12.0。 -
打开
nebula集群的 YAML 文件。
kubectl edit nebulacluster nebula -n <namespace>
- 更新
version的值。
修改后的 YAML 文件内容如下:
apiVersion: apps.nebula-graph.io/v1alpha1
kind: NebulaCluster
metadata:
name: nebula
spec:
graphd:
version: v3.12.0 //将值从 3.5.0 修改至 v3.12.0。
...
metad:
version: v3.12.0 //将值从 3.5.0 修改至 v3.12.0。
...
storaged:
version: v3.12.0 //将值从 3.5.0 修改至 v3.12.0。
...
- 应用配置。
保存 YAML 文件并退出后,Kubernetes 会自动更新集群的配置,并开始升级集群。
- 等待约 2 分钟后,执行以下命令可查看到服务的镜像版本变更为 v3.12.0。
kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c
返回:
1 vesoft/nebula-graphd:v3.12.0
1 vesoft/nebula-metad:v3.12.0
3 vesoft/nebula-storaged:v3.12.0
使用helm升级 悦数图数据库 集群
- 更新 Helm 仓库,拉取最新的仓库资源。
helm repo update
- 配置 Helm 的环境变量。
export NEBULA_CLUSTER_NAME=nebula # <ProductName /> 集群的名字。
export NEBULA_CLUSTER_NAMESPACE=nebula # <ProductName /> 集群所处的命名空间的名字。
- 升级 悦数图数据库 集群。
例如升级至 v3.12.0 悦数图数据库 集群的命令如下。
helm upgrade "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \
--namespace="${NEBULA_CLUSTER_NAMESPACE}" \
--set nameOverride=${NEBULA_CLUSTER_NAME} \
--set nebula.version=v3.12.0
--set nebula.version的值指需要升级集群的目标版本号。
- 查看集群状态及集群版本。
查看集群状态:
$ kubectl -n "${NEBULA_CLUSTER_NAMESPACE}" get pod -l "app.kubernetes.io/cluster=${NEBULA_CLUSTER_NAME}"
NAME READY STATUS RESTARTS AGE
nebula-graphd-0 1/1 Running 0 2m
nebula-graphd-1 1/1 Running 0 2m
nebula-metad-0 1/1 Running 0 2m
nebula-metad-1 1/1 Running 0 2m
nebula-metad-2 1/1 Running 0 2m
nebula-storaged-0 1/1 Running 0 2m
nebula-storaged-1 1/1 Running 0 2m
nebula-storaged-2 1/1 Running 0 2m
查看集群版本:
$ kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c
1 vesoft/nebula-graphd:v3.12.0
1 vesoft/nebula-metad:v3.12.0
3 vesoft/nebula-storaged:v3.12.0
加速升级过程
集群的升级过程是一个滚动更新的过程也是耗时的过程,因为 Storage 服务的 Leader 分片副本会进行状态转移。用户可在集群实例的 YAML 文件中配置enableForceUpdate参数,来略过 Leader 分片副本转移操作,以达到加速升级的过程。详情参见配置滚动更新策略。
故障排查
升级过程中,如果遇到问题,查看集群服务 Pod 的日志。
kubectl logs <pod-name> -n <namespace>
同时,检查集群的状态和事件。
kubectl describe nebulaclusters <cluster-name> -n <namespace>