跳转至

升级 Nebula Graph 集群

本文介绍如何升级通过 Nebula Operator 创建的 Nebula Graph 集群。

使用限制

  • 只支持使用 Nebula Operator 创建的 Nebula Graph 集群。
  • 只支持升级 Nebula Graph 2.5.x 至 2.6.x 版本。
  • 不支持升级通过 0.8.0 版 Operator 创建的集群。

使用 Kubectl 升级 Nebula Graph 集群

前提条件

已创建 Nebula Graph 集群。具体步骤,参见使用 Kubectl 创建 Nebula Graph 集群

本文示例中待升级的 Nebula Graph 版本为 2.5.1,其 YAML 文件名为apps_v1alpha1_nebulacluster.yaml

操作步骤

  1. 查看集群中服务的镜像版本。

    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:v2.5.1
          1 vesoft/nebula-metad:v2.5.1
          3 vesoft/nebula-storaged:v2.5.1  
    
  2. 编辑apps_v1alpha1_nebulacluster.yaml并将所有version的值从 v2.5.1 修改至v2.6.2。

    修改后的 YAML 文件内容如下:

    apiVersion: apps.nebula-graph.io/v1alpha1
    kind: NebulaCluster
    metadata:
      name: nebula
    spec:
      graphd:
        resources:
          requests:
            cpu: "500m"
            memory: "500Mi"
          limits:
            cpu: "1"
            memory: "1Gi"
        replicas: 1
        image: vesoft/nebula-graphd
        version: v2.6.2 //将值从 v2.5.1 修改至v2.6.2。
        service:
          type: NodePort
          externalTrafficPolicy: Local
        logVolumeClaim:
          resources:
            requests:
              storage: 2Gi
          storageClassName: gp2
      metad:
        resources:
          requests:
            cpu: "500m"
            memory: "500Mi"
          limits:
            cpu: "1"
            memory: "1Gi"
        replicas: 1
        image: vesoft/nebula-metad
        version: v2.6.2 //将值从 v2.5.1 修改至v2.6.2。
        dataVolumeClaim:
          resources:
            requests:
              storage: 2Gi
          storageClassName: gp2
        logVolumeClaim:
          resources:
            requests:
              storage: 2Gi
          storageClassName: gp2
      storaged:
        resources:
          requests:
            cpu: "500m"
            memory: "500Mi"
          limits:
            cpu: "1"
            memory: "1Gi"
        replicas: 3
        image: vesoft/nebula-storaged
        version: v2.6.2 //将值从 v2.5.1 修改至v2.6.2。
        dataVolumeClaim:
          resources:
            requests:
              storage: 2Gi
          storageClassName: gp2
        logVolumeClaim:
          resources:
            requests:
              storage: 2Gi
          storageClassName: gp2
      reference:
        name: statefulsets.apps
        version: v1
      schedulerName: default-scheduler
      imagePullPolicy: Always
    
  3. 执行以下命令将版本升级的更新应用于集群 CR 中。

    kubectl apply -f apps_v1alpha1_nebulacluster.yaml
    
  4. 等待约 2 分钟后,执行以下命令可查看到服务的镜像版本变更为v2.6.2。

    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:v2.6.2
          1 vesoft/nebula-metad:v2.6.2
          3 vesoft/nebula-storaged:v2.6.2  
    

使用 Helm 升级 Nebula Graph 集群

前提条件

已创建 Nebula Graph 集群。具体步骤,参见使用 Helm 创建 Nebula Graph 集群

操作步骤

  1. 更新 Helm 仓库,拉取最新的仓库资源。

    helm repo update
    
  2. 配置 Helm 的环境变量。

    export NEBULA_CLUSTER_NAME=nebula         # Nebula Graph 集群的名字。
    export NEBULA_CLUSTER_NAMESPACE=nebula    # Nebula Graph 集群所处的命名空间的名字。
    
  3. 升级 Nebula Graph 集群。

    例如升级至v2.6.2Nebula Graph 集群的命令如下。

    helm upgrade "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \
        --namespace="${NEBULA_CLUSTER_NAMESPACE}" \
        --set nameOverride=${NEBULA_CLUSTER_NAME} \
        --set nebula.version=v2.6.2
    

    --set nebula.version的值指需要升级集群的目标版本号。

  4. 执行以下命令查看集群状态及集群版本。

    查看集群状态:

    $ 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:v2.6.2
          1 vesoft/nebula-metad:v2.6.2
          3 vesoft/nebula-storaged:v2.6.2
    

最后更新: March 7, 2023