使用 Kubectl 部署 NebulaGraph 集群¶
历史版本兼容性
1.x 版本的 NebulaGraph Operator 不兼容 3.x 以下版本的 NebulaGraph。
前提条件¶
-
准备相应的 License 文件
Enterpriseonly
只有当创建的 NebulaGraph 集群是企业版本时,才需要提供 License 文件。
创建集群¶
本文以创建名为nebula
的集群为例,说明如何部署 NebulaGraph 集群。
-
创建集群。
-
社区版集群示例,创建名为
apps_v1alpha1_nebulacluster.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: v3.4.0 logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks metad: resources: requests: cpu: "500m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 1 image: vesoft/nebula-metad version: v3.4.0 logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks dataVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks storaged: resources: requests: cpu: "500m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 1 image: vesoft/nebula-storaged version: v3.4.0 logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks dataVolumeClaims: # 从 Operator 1.3.0 开始,支持挂载多个数据盘。 - resources: requests: storage: 2Gi storageClassName: fast-disks - resources: requests: storage: 2Gi storageClassName: fast-disks enableAutoBalance: true reference: name: statefulsets.apps version: v1 schedulerName: default-scheduler nodeSelector: nebula: cloud imagePullPolicy: Always unsatisfiableAction: ScheduleAnyway
参数描述如下:
参数 默认值 描述 metadata.name
- 创建的 NebulaGraph 集群名称。 spec.graphd.replicas
1
Graphd 服务的副本数。 spec.graphd.images
vesoft/nebula-graphd
Graphd 服务的容器镜像。 spec.graphd.version
v3.4.0
Graphd 服务的版本号。 spec.graphd.service
- Graphd 服务 Service 配置。 spec.graphd.logVolumeClaim.storageClassName
- Graphd 服务的日志盘存储配置。 spec.metad.replicas
1
Metad 服务的副本数。 spec.metad.images
vesoft/nebula-metad
Metad 服务的容器镜像。 spec.metad.version
v3.4.0
Metad 服务的版本号。 spec.metad.dataVolumeClaim.storageClassName
- Metad 服务的数据盘存储配置。 spec.metad.logVolumeClaim.storageClassName
- Metad 服务的日志盘存储配置。 spec.storaged.replicas
3
Storaged 服务的副本数。 spec.storaged.images
vesoft/nebula-storaged
Storaged 服务的容器镜像。 spec.storaged.version
v3.4.0
Storaged 服务的版本号。 spec.storaged.dataVolumeClaims.resources.requests.storage
- Storaged 服务的数据盘存储大小,可指定多块数据盘存储数据。当指定多块数据盘时,路径为: /usr/local/nebula/data1
、/usr/local/nebula/data2
等。spec.storaged.dataVolumeClaims.resources.storageClassName
- Storaged 服务的数据盘存储配置。若不指定,则使用全局的存储配置。 spec.storaged.logVolumeClaim.storageClassName
- Storaged 服务的日志盘存储配置。 spec.storaged.enableAutoBalance
true
是否自动均衡数据。 spec.reference.name
- 依赖的控制器名称。 spec.schedulerName
- 调度器名称。 spec.imagePullPolicy
NebulaGraph 镜像的拉取策略。关于拉取策略详情,请参考 Image pull policy。 镜像拉取策略。 -
企业版集群示例,创建名为
apps_v1alpha1_nebulacluster.yaml
的文件。# 联系销售人员获取完整配置。 apiVersion: apps.nebula-graph.io/v1alpha1 kind: NebulaCluster metadata: annotations: nebula-graph.io/owner: test name: nebula spec: graphd: readinessProbe: failureThreshold: 3 httpGet: path: /status port: 19669 scheme: HTTP initialDelaySeconds: 40 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 10 image: reg.vesoft-inc.com/vesoft-ent/nebula-graphd logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks replicas: 1 resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 500Mi version: v3.4.0 imagePullPolicy: Always imagePullSecrets: - name: vesoft metad: license: secretName: nebula-license licenseKey: nebula.license ...
企业版特有参数描述如下:
参数 默认值 描述 spec.metad.license
- 创建企业版 NebulaGraph 集群所需的 License 配置。 Enterpriseonly
拉取企业版 NebulaGraph 集群镜像前,请确保已联系销售人员(inqury@vesoft.com)获取企业版 NebulaGraph 集群的镜像信息。
-
-
配置集群 License。
Enterpriseonly
- 此步骤只适用于创建企业版 NebulaGraph集群。
- 创建社区版 NebulaGraph 集群时,忽略此步骤。
kubectl create secret generic nebula-license --from-file=nebula.license
查看集群 License 信息:
kubectl get secrets nebula-license -o yaml
-
创建 NebulaGraph 集群。
kubectl create -f apps_v1alpha1_nebulacluster.yaml
返回:
nebulacluster.apps.nebula-graph.io/nebula created
-
查看 NebulaGraph 集群状态。
kubectl get nebulaclusters.apps.nebula-graph.io nebula
返回:
NAME GRAPHD-DESIRED GRAPHD-READY METAD-DESIRED METAD-READY STORAGED-DESIRED STORAGED-READY AGE nebula 1 1 1 1 3 3 86s
扩缩容集群¶
- 不支持扩缩容社区版的 NebulaGraph 集群。
- 仅支持通过 v1.1.0 及以上版本的 NebulaGraph Operator 扩缩容企业版的 NebulaGraph 集群。
用户可以通过编辑apps_v1alpha1_nebulacluster.yaml
文件中的replicas
的值进行 NebulaGraph 集群的扩缩容。
扩容集群¶
本文举例扩容 NebulaGraph 集群中 Storage 服务至 5 个。步骤如下:
-
将
apps_v1alpha1_nebulacluster.yaml
文件中storaged.replicas
的参数值从3
改为5
。storaged: resources: requests: cpu: "500m" memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 5 image: vesoft/nebula-storaged version: v3.4.0 dataVolumeClaims: - resources: requests: storage: 2Gi storageClassName: fast-disks - resources: requests: storage: 2Gi storageClassName: fast-disks logVolumeClaim: resources: requests: storage: 2Gi storageClassName: fast-disks reference: name: statefulsets.apps version: v1 schedulerName: default-scheduler
-
执行以下命令使上述更新同步至 NebulaGraph 集群 CR 中。
kubectl apply -f apps_v1alpha1_nebulacluster.yaml
-
查看 Storage 服务的副本数。
返回:kubectl get pods -l app.kubernetes.io/cluster=nebula
由上可看出 Storage 服务的副本数被扩容至 5 个。NAME READY STATUS RESTARTS AGE nebula-graphd-0 1/1 Running 0 2m nebula-metad-0 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 nebula-storaged-3 1/1 Running 0 5m nebula-storaged-4 1/1 Running 0 5m
缩容集群¶
缩容集群的原理和扩容一样,用户只需将apps_v1alpha1_nebulacluster.yaml
文件中的replicas
的值缩小。具体操作,请参考上文的扩容集群部分。
Caution
目前仅支持对 NebulaGraph 集群中的 Graph 服务和 Storage 服务进行扩缩容,不支持扩缩容 Meta 服务。
删除集群¶
使用 Kubectl 删除 NebulaGraph 集群的命令如下:
kubectl delete -f apps_v1alpha1_nebulacluster.yaml