跳转至

使用 Helm 部署 Nebula Graph 集群

前提条件

安装 Nebula Operator

创建 Nebula Graph 集群

  1. 添加 Nebula Operator chart 仓库至 Helm(如已创添加,略过前面 1 至 2 步,从第 3 步开始执行)。

    helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
    
  2. 更新 Helm 仓库,拉取最新仓库资源。

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

    export NEBULA_CLUSTER_NAME=nebula         # Nebula Graph 集群的名字。
    export NEBULA_CLUSTER_NAMESPACE=nebula    # Nebula Graph 集群所处的命名空间的名字。
    export STORAGE_CLASS_NAME=gp2             # Nebula Graph 集群的 StorageClass。
    
  4. 为 Nebula Graph 集群创建命名空间(如已创建,略过此步)。

    kubectl create namespace "${NEBULA_CLUSTER_NAMESPACE}"
    
  5. 创建 Nebula Graph 集群。

    helm install "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \
        --namespace="${NEBULA_CLUSTER_NAMESPACE}" \
        --set nameOverride=${NEBULA_CLUSTER_NAME} \
        --set nebula.storageClassName="${STORAGE_CLASS_NAME}"
    
  6. 查看 Nebula Graph 集群创建状态。

    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          5m34s
    nebula-graphd-1     1/1     Running   0          5m34s
    nebula-metad-0      1/1     Running   0          5m34s
    nebula-metad-1      1/1     Running   0          5m34s
    nebula-metad-2      1/1     Running   0          5m34s
    nebula-storaged-0   1/1     Running   0          5m34s
    nebula-storaged-1   1/1     Running   0          5m34s
    nebula-storaged-2   1/1     Running   0          5m34s
    

扩缩容集群

用户可通过定义 Nebula Graph 中不同服务对应的replicas的值扩缩容 Nebuala Graph 集群。

例如,扩容 Nebula Graph 集群中 Storage 的副本数为 5(原始值为 2),命令如下:

helm upgrade "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \
    --namespace="${NEBULA_CLUSTER_NAMESPACE}" \
    --set nameOverride=${NEBULA_CLUSTER_NAME} \
    --set nebula.storageClassName="${STORAGE_CLASS_NAME}" \
    --set nebula.storaged.replicas=5

同理,将 Nebula Graph 集群中服务对应的replicas的值设置成小于原始值,即可实现集群服务的缩容。

Caution

目前仅支持对 Nebula Graph 集群中的 Graph 服务和 Storage 服务进行扩缩容,不支持扩缩容 Meta 服务。

用户可点击 nebula-cluster/values.yaml 查看 Nebula Cluster 集群 Chart 的更多配置。有关文件中配置项的解释,参考下文 Nebula Graph 集群 Chart 配置参数说明

删除集群

使用 Helm 删除集群的命令如下:

helm uninstall "${NEBULA_CLUSTER_NAME}" --namespace="${NEBULA_CLUSTER_NAMESPACE}"

后续操作

连接 Nebula Graph 数据库

Nebula Graph 集群 Chart 配置参数说明

参数 默认值 描述
nameOverride nil 覆盖集群 Chart 的名称。
nebula.version v2.6.2 Nebula Graph 的版本。
nebula.imagePullPolicy IfNotPresent Nebula Graph 镜像的拉取策略。关于拉取策略详情,请参考 Image pull policy
nebula.storageClassName nil 持久存储卷的类型,默认使用 StorageClass 的名字。
nebula.schedulerName default-scheduler Nebula Graph 集群的调度器。
nebula.reference {"name": "statefulsets.apps", "version": "v1"} 为 Nebula Graph 引用的工作负载。
nebula.graphd.image vesoft/nebula-graphd Graphd 容器镜像名称。使用 nebula.version中的值作为版本。
nebula.graphd.replicas 2 Graphd 服务的副本数。
nebula.graphd.env [] Graphd 服务的环境变量。
nebula.graphd.resources {"resources":{"requests":{"cpu":"500m","memory":"500Mi"},"limits":{"cpu":"1","memory":"1Gi"}}} Graphd 资源配置。
nebula.graphd.logStorage 500Mi Graphd 服务的日志盘大小。
nebula.graphd.podLabels {} Graphd 服务 Pod 的标签。
nebula.graphd.podAnnotations {} Graphd 服务 Pod 的注解。
nebula.graphd.nodeSelector {} 为 Graphd pod 设置节点标签以分配至指定的节点中。
nebula.graphd.tolerations {} 为 Graphd pod 设置容忍度。
nebula.graphd.affinity {} 为 Graphd pod 设置亲和性。
nebula.graphd.readinessProbe {} 为 Graphd pod 设置就绪探针以检测容器的状态。
nebula.graphd.sidecarContainers {} 为 Graphd pod 设置 Sidecar Containers。
nebula.graphd.sidecarVolumes {} 为 Graphd pod 设置 Sidecar Volumes。
nebula.metad.image vesoft/nebula-metad Metad 容器镜像名称。使用 nebula.version中的值作为版本。
nebula.metad.replicas 3 Metad 服务的副本数。
nebula.metad.env [] Metad 服务的环境变量。
nebula.metad.resources {"resources":{"requests":{"cpu":"500m","memory":"500Mi"},"limits":{"cpu":"1","memory":"1Gi"}}} Metad 服务的资源配置。
nebula.metad.logStorage 500Mi Metad 服务的日志盘大小。
nebula.metad.dataStorage 1Gi Metad 服务的数据盘大小。
nebula.metad.podLabels {} Metad 服务 Pod 的标签。
nebula.metad.podAnnotations {} Metad 服务 Pod 的注解。
nebula.metad.nodeSelector {} 为 Metad pod 设置节点标签以分配至指定的节点中。
nebula.metad.tolerations {} 为 Metad pod 设置容忍度。
nebula.metad.affinity {} 为 Metad pod 设置亲和性。
nebula.metad.readinessProbe {} 为 Metad pod 设置就绪探针以检测容器的状态。
nebula.metad.sidecarContainers {} 为 Metad pod 设置 Sidecar Containers。
nebula.metad.sidecarVolumes {} 为 Metad pod 设置 Sidecar Volumes。
nebula.storaged.image vesoft/nebula-storaged Storaged 容器镜像名称。使用 nebula.version中的值作为版本。
nebula.storaged.replicas 3 Storaged 服务的副本数。
nebula.storaged.env [] Storaged 服务的环境变量。
nebula.storaged.resources {"resources":{"requests":{"cpu":"500m","memory":"500Mi"},"limits":{"cpu":"1","memory":"1Gi"}}} Storaged 服务的资源配置。
nebula.storaged.logStorage 500Mi Storaged 服务的日志盘大小。
nebula.storaged.dataStorage 1Gi Storaged 服务的数据盘大小。
nebula.storaged.podLabels {} Storaged 服务 Pod 的标签。
nebula.storaged.podAnnotations {} Storaged 服务 Pod 的注解。
nebula.storaged.nodeSelector {} 为 Storaged pod 设置节点标签以分配至指定的节点中。
nebula.storaged.tolerations {} 为 Storaged pod 设置容忍度。
nebula.storaged.affinity {} 为 Storaged pod 设置亲和性。
nebula.storaged.readinessProbe {} 为 Storaged pod 设置就绪探针以检测容器的状态。
nebula.storaged.sidecarContainers {} 为 Storaged pod 设置 Sidecar Containers。
nebula.storaged.sidecarVolumes {} 为 Storaged Pod 设置 Sidecar Volumes。
imagePullSecrets [] 拉取镜像的 Secret。

最后更新: March 7, 2023