跳转至

使用 Helm 部署 NebulaGraph 集群

历史版本兼容性

1.x 版本的 NebulaGraph Operator 不兼容 3.x 以下版本的 NebulaGraph。

前提条件

  • 准备相应的 License 文件

    Enterpriseonly

    只有当创建的 NebulaGraph 集群是企业版本时,才需要提供 License 文件。

创建 NebulaGraph 集群

  1. 添加 NebulaGraph 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         # NebulaGraph 集群的名字。
    export NEBULA_CLUSTER_NAMESPACE=nebula    # NebulaGraph 集群所处的命名空间的名字。
    export STORAGE_CLASS_NAME=fast-disks             # NebulaGraph 集群的 StorageClass。
    
  4. 为 NebulaGraph 集群创建命名空间(如已创建,略过此步)。

    kubectl create namespace "${NEBULA_CLUSTER_NAMESPACE}"
    
  5. 配置集群 License。

    Enterpriseonly

    • 此步骤只适用于创建企业版 NebulaGraph集群。
    • 创建社区版 NebulaGraph 集群时,忽略此步骤。
    kubectl create secret generic nebula-license --from-file=nebula.license
    

    查看集群 License 信息:

    kubectl get secrets nebula-license -o yaml
    

  6. 创建 NebulaGraph 集群。

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

    Enterpriseonly

    如果创建的是企业版 NebulaGraph 集群,需要在上述命令中添加--set nebula.metad.license.secretName=nebula-license--set nebula.metad.license.licenseKey=nebula.license参数。

  7. 查看 NebulaGraph 集群创建状态。

    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
    

扩缩容集群

  • 不支持扩缩容社区版的 NebulaGraph 集群。
  • 仅支持通过 v1.1.0 及以上版本的 NebulaGraph Operator 扩缩容企业版的 NebulaGraph 集群。

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

例如,扩容 NebulaGraph 集群中 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

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

Caution

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

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

删除集群

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

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

或者使用真实值删除集群,例如:

helm uninstall nebula --namespace=nebula

后续操作

连接 NebulaGraph 数据库

NebulaGraph 集群 Chart 配置参数说明

参数 默认值 描述
nameOverride nil 覆盖集群 Chart 的名称。
nebula.version v3.4.0 NebulaGraph 的版本。
nebula.imagePullPolicy IfNotPresent NebulaGraph 镜像的拉取策略。关于拉取策略详情,请参考 Image pull policy
nebula.storageClassName nil 持久存储卷的类型,默认使用 StorageClass 的名字。
nebula.schedulerName default-scheduler NebulaGraph 集群的调度器。
nebula.reference {"name": "statefulsets.apps", "version": "v1"} 为 NebulaGraph 引用的工作负载。
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.license {} 创建企业版 NebulaGraph 集群所需的 License 配置。
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。

最后更新: July 6, 2023