diff --git a/docs-2.0/20.appendix/6.eco-tool-version.md b/docs-2.0/20.appendix/6.eco-tool-version.md index 5dc5ac01502..c67fd2e8952 100644 --- a/docs-2.0/20.appendix/6.eco-tool-version.md +++ b/docs-2.0/20.appendix/6.eco-tool-version.md @@ -79,8 +79,7 @@ Nebula Operator(简称Operator)是用于在Kubernetes系统上自动化部 |Nebula Graph版本|Operator版本(commit id)| |:---|:---| -| {{ nebula.release }} | {{operator.release}}(6d1104e) | ---> +| {{ nebula.release }} | {{operator.release}}(ba88e28) | ## Nebula Importer diff --git a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md index ea035888cdb..cd385eead65 100644 --- a/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md +++ b/docs-2.0/nebula-operator/1.introduction-to-nebula-operator.md @@ -18,9 +18,11 @@ Nebula Operator已具备的功能如下: - **集群扩容和缩容**:通过在控制循环中调用Nebula Graph原生提供的扩缩容接口,Nebula Graph封装Nebula Operator实现了扩缩容的逻辑,用户可以通过YAML配置进行简单的扩缩容,且保证数据的稳定性。更多信息参考[使用Kubeclt扩缩容集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md#_3)或[使用Helm扩缩容集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md#_2)。 +- **集群升级**:支持升级2.5.x版的Nebula Graph集群至2.6.x版。 + - **故障自愈**:Nebula Operator调用Nebula Graph集群提供的接口,动态地感知服务状态。一旦发现异常,Nebula Operator自动进行容错处理。更多信息参考[故障自愈](5.operator-failover.md)。 -- **均衡调度**: 基于调度器扩展接口,Nebula Operator提供的调度器可以将应用Pods均匀地分布在Nebula Graph集群中。 +- **均衡调度**:基于调度器扩展接口,Nebula Operator提供的调度器可以将应用Pods均匀地分布在Nebula Graph集群中。 ## 使用限制 @@ -30,7 +32,8 @@ Nebula Operator不支持v1.x版本的Nebula Graph,其与Nebula Graph版本的 | Nebula Operator版本 | Nebula Graph版本 | | ------------------- | ---------------- | -| {{operator.release}}| {{nebula.release}} | +| {{operator.release}}| 2.5.x ~ 2.6.x | +|0.8.0|2.5.x| ### 功能限制 diff --git a/docs-2.0/nebula-operator/2.deploy-nebula-operator.md b/docs-2.0/nebula-operator/2.deploy-nebula-operator.md index e554c94e89e..61ac16a0d98 100644 --- a/docs-2.0/nebula-operator/2.deploy-nebula-operator.md +++ b/docs-2.0/nebula-operator/2.deploy-nebula-operator.md @@ -69,12 +69,20 @@ 3. 安装Nebula Operator。 ```bash - helm install nebula-operator nebula-operator/nebula-operator --namespace= --version=${chart_version} + helm install nebula-operator nebula-operator/nebula-operator --namespace= --version=${chart_version} ``` - - 上述命令中的``为用户创建的命名空间。如果用户未创建该命名空间,可以执行`kubectl create namespace nebula-operator-system`进行创建。用户也可创建其他命名空间。 + 例如,安装{{operator.release}}版的Operator命令如下。 + + ```bash + helm install nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version={{operator.release}} + ``` + + - 上述命令中的`nebula-operator-system`为用户创建的命名空间。如果用户未创建该命名空间,可以执行`kubectl create namespace nebula-operator-system`进行创建。用户也可创建其他命名空间。 - - `${chart_version}`为Nebula Operator chart的版本。当Chart中只有一个默认版本时,可不指定。执行`helm search repo -l nebula-operator`查看Chart版本。 + - `{{operator.release}}`为Nebula Operator chart的版本。当Chart中只有一个默认版本时,可不指定。执行`helm search repo -l nebula-operator`查看Chart版本。 + + 用户可在执行安装Nebula Operator chart命令时自定义其配置。更多信息,查看下文**自定义配置Chart**。 @@ -85,17 +93,17 @@ 示例如下: ```yaml -[abby@master ~]$ helm show values nebula-operator/nebula-operator +[abby@master ~]$ helm show values nebula-operator/nebula-operator image: nebulaOperator: - image: vesoft/nebula-operator:v0.8.0 - imagePullPolicy: IfNotPresent + image: vesoft/nebula-operator:{{operator.branch}} + imagePullPolicy: Always kubeRBACProxy: image: gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 - imagePullPolicy: IfNotPresent + imagePullPolicy: Always kubeScheduler: image: k8s.gcr.io/kube-scheduler:v1.18.8 - imagePullPolicy: IfNotPresent + imagePullPolicy: Always imagePullSecrets: [] kubernetesClusterDomain: "" @@ -106,11 +114,11 @@ controllerManager: env: [] resources: limits: - cpu: 100m - memory: 30Mi + cpu: 200m + memory: 200Mi requests: cpu: 100m - memory: 20Mi + memory: 100Mi admissionWebhook: create: true @@ -122,21 +130,22 @@ scheduler: env: [] resources: limits: - cpu: 100m - memory: 30Mi + cpu: 200m + memory: 200Mi requests: cpu: 100m - memory: 20Mi + memory: 100Mi +... ``` -`values.yaml`中参数描述如下: +部分参数描述如下: | 参数 | 默认值 | 描述 | | :------------------------------------- | :------------------------------ | :----------------------------------------- | -| `image.nebulaOperator.image` | `vesoft/nebula-operator:v0.8.0` | Nebula Operator的镜像,版本为v0.8.0。 | +| `image.nebulaOperator.image` | `vesoft/nebula-operator:{{operator.branch}}` | Nebula Operator的镜像,版本为{{operator.release}}。 | | `image.nebulaOperator.imagePullPolicy` | `IfNotPresent` | 镜像拉取策略。 | | `imagePullSecrets` | - | 镜像拉取密钥。 | -| `kubernetesClusterDomain` | `cluster.local`。 | 集群域名。 | +| `kubernetesClusterDomain` | `cluster.local` | 集群域名。 | | `controllerManager.create` | `true` | 是否启用controller-manager。 | | `controllerManager.replicas` | `2` | controller-manager副本数。 | | `admissionWebhook.create` | `true` | 是否启用Admission Webhook。 | @@ -169,11 +178,79 @@ helm install nebula-operator nebula-operator/nebula-operator --namespace= -f ${HOME}/nebula-operator/charts/nebula-operator/values.yaml + helm upgrade nebula-operator nebula-operator/nebula-operator --namespace= -f ${HOME}/nebula-operator/charts/nebula-operator/values.yaml ``` - ``为用户创建的命名空间,nebula-operator相关Pods在此命名空间下。 + ``为用户创建的命名空间,nebula-operator相关Pods在此命名空间下。 + + +### 升级Nebula Operator + +!!! Compatibility "历史版本兼容性" + + 由于0.9.0版本的Nebula Operator的日志盘和数据盘分开存储,因此用升级后的Operator管理2.5.x版本的Nebula Graph集群会导致兼容性问题。用户可以备份2.5.x版本的Nebula Graph集群,然后使用升级版本的Operator创建2.6.x版本集群。 + +1. 拉取最新的Helm仓库。 + + + ```bash + helm repo update + ``` + +2. 升级Operator。 + + ```bash + helm upgrade nebula-operator nebula-operator/nebula-operator --namespace= --version={{operator.release}} + ``` + 示例: + + ```bash + helm upgrade nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version={{operator.release}} + ``` + + 输出: + + ```bash + Release "nebula-operator" has been upgraded. Happy Helming! + NAME: nebula-operator + LAST DEPLOYED: Tue Nov 16 02:21:08 2021 + NAMESPACE: nebula-operator-system + STATUS: deployed + REVISION: 3 + TEST SUITE: None + NOTES: + Nebula Operator installed! + ``` + +3. 拉取最新的CRD配置文件。 + + !!! note + 升级Operator后,需要同时升级相应的CRD配置,否则Nebula Graph集群创建会失败。有关CRD的配置,参见[apps.nebula-graph.io_nebulaclusters.yaml](https://github.com/vesoft-inc/nebula-operator/blob/{{operator.branch}}/config/crd/bases/apps.nebula-graph.io_nebulaclusters.yaml)。 + + ```bash + helm pull nebula-operator/nebula-operator + ``` + +4. 升级CRD配置文件。 + + ```bash + kubectl apply -f .yaml + ``` + + 示例: + + ```bash + kubectl apply -f config/crd/bases/apps.nebula-graph.io_nebulaclusters.yaml + ``` + + 输出: + + ```bash + customresourcedefinition.apiextensions.k8s.io/nebulaclusters.apps.nebula-graph.io created + ``` + + ### 卸载Nebula Operator 1. 卸载Nebula Operator chart。 diff --git a/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md b/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md index 933ebf170d8..4a18a37d0ab 100644 --- a/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md +++ b/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md @@ -28,11 +28,11 @@ memory: "1Gi" replicas: 1 image: vesoft/nebula-graphd - version: v2.5.1 + version: {{nebula.branch}} service: type: NodePort externalTrafficPolicy: Local - storageClaim: + logVolumeClaim: resources: requests: storage: 2Gi @@ -47,8 +47,13 @@ memory: "1Gi" replicas: 1 image: vesoft/nebula-metad - version: v2.5.1 - storageClaim: + version: {{nebula.branch}} + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: gp2 + logVolumeClaim: resources: requests: storage: 2Gi @@ -63,8 +68,13 @@ memory: "1Gi" replicas: 3 image: vesoft/nebula-storaged - version: v2.5.1 - storageClaim: + version: {{nebula.branch}} + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: gp2 + logVolumeClaim: resources: requests: storage: 2Gi @@ -73,7 +83,7 @@ name: statefulsets.apps version: v1 schedulerName: default-scheduler - imagePullPolicy: IfNotPresent + imagePullPolicy: Always ``` 参数描述如下: @@ -83,23 +93,25 @@ | `metadata.name` | - | 创建的Nebula Graph集群名称。 | | `spec.graphd.replicas` | `1` | Graphd服务的副本数。 | | `spec.graphd.images` | `vesoft/nebula-graphd` | Graphd服务的容器镜像。 | - | `spec.graphd.version` | `v2.5.1` | Graphd服务的版本号。 | + | `spec.graphd.version` | `{{nebula.branch}}` | Graphd服务的版本号。 | | `spec.graphd.service` | - | Graphd服务Service配置。 | - | `spec.graphd.storageClaim` | - | Graphd服务存储配置。 | + | `spec.graphd.logVolumeClaim.storageClassName` | - | Graphd服务的日志盘存储配置。 | | `spec.metad.replicas` | `1` | Metad服务的副本数。 | | `spec.metad.images` | `vesoft/nebula-metad` | Metad服务的容器镜像。 | - | `spec.metad.version` | `v2.5.1` | Metad服务的版本号。 | - | `spec.metad.storageClaim` | - | Metad服务存储配置。 | + | `spec.metad.version` | `{{nebula.branch}}` | 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` | `v2.5.1` | Storaged服务的版本号。 | - | `spec.storaged.storageClaim` | - | Storaged服务存储配置。 | + | `spec.storaged.version` | `{{nebula.branch}}` | Storaged服务的版本号。 | + | `spec.storaged.dataVolumeClaim.storageClassName` | - | Storaged服务的数据盘存储配置。 | + | `spec.storaged.logVolumeClaim.storageClassName`|-|Storaged服务的日志盘存储配置。| | `spec.reference.name` | - | 依赖的控制器名称。 | | `spec.schedulerName` | - | 调度器名称。 | | `spec.imagePullPolicy` | Nebula Graph镜像的拉取策略。关于拉取策略详情,请参考[Image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)。 | 镜像拉取策略。 | -2. 创建Nebula Graph集群。 +1. 创建Nebula Graph集群。 ```bash kubectl create -f apps_v1alpha1_nebulacluster.yaml @@ -120,8 +132,8 @@ 返回: ```bash - NAME GRAPHD-DESIRED GRAPHD-READY METAD-DESIRED METAD-READY STORAGED-DESIRED STORAGED-READY AGE - nebula-cluster 1 1 1 1 3 3 31h + NAME GRAPHD-DESIRED GRAPHD-READY METAD-DESIRED METAD-READY STORAGED-DESIRED STORAGED-READY AGE + nebula 1 1 1 1 3 3 86s ``` ## 扩缩容集群 @@ -138,19 +150,28 @@ storaged: resources: requests: - cpu: "1" - memory: "1Gi" + cpu: "500m" + memory: "500Mi" limits: cpu: "1" memory: "1Gi" replicas: 5 image: vesoft/nebula-storaged - version: v2.5.1 - storageClaim: + version: {{nebula.branch}} + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: gp2 + logVolumeClaim: resources: requests: storage: 2Gi - storageClassName: fast-disks + storageClassName: gp2 + reference: + name: statefulsets.apps + version: v1 + schedulerName: default-scheduler ``` 2. 执行以下命令使上述更新同步至Nebula Graph集群CR中。 diff --git a/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md b/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md index d6996180628..e48be4691fc 100644 --- a/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md +++ b/docs-2.0/nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md @@ -99,26 +99,50 @@ helm uninstall "${NEBULA_CLUSTER_NAME}" --namespace="${NEBULA_CLUSTER_NAMESPACE} | 参数 | 默认值 | 描述 | | :-------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ | | `nameOverride` | `nil` | 覆盖集群Chart的名称。 | -| `nebula.version` | `v2.5.1` | Nebula Graph的版本。 | +| `nebula.version` | `{{nebula.branch}}` | Nebula Graph的版本。 | | `nebula.imagePullPolicy` | `IfNotPresent` | Nebula Graph镜像的拉取策略。关于拉取策略详情,请参考[Image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)。 | | `nebula.storageClassName` | `nil` | 持久存储卷的类型,默认使用StorageClass的名字。 | | `nebula.schedulerName` | `default-scheduler` | Nebula Graph集群的调度器。 | | `nebula.reference` | `{"name": "statefulsets.apps", "version": "v1"}` | 为Nebula Graph引用的工作负载。 | -| `nebula.podLabels` | `{}` | Nebula Graph服务Pod的标签。 | -| `nebula.podAnnotations` | `{}` | 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.storage` | `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.storage` | `1Gi` | Graphd服务的存储大小值。 | +| `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.storage` | `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。 | diff --git a/docs-2.0/nebula-operator/4.connect-to-nebula-graph-service.md b/docs-2.0/nebula-operator/4.connect-to-nebula-graph-service.md index 99befa7425e..65c8d1e3984 100644 --- a/docs-2.0/nebula-operator/4.connect-to-nebula-graph-service.md +++ b/docs-2.0/nebula-operator/4.connect-to-nebula-graph-service.md @@ -25,7 +25,13 @@ 2. 使用上述`-graphd-svc` Service的IP连接Nebula Graph数据库: ```bash - kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr <10.98.213.34> -port 9669 -u -p + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p + ``` + + 示例: + + ```bash + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console -addr 10.98.213.34 -port 9669 -u root -p vesoft ``` - `--image`:为连接Nebula Graph的工具Nebula Console的镜像。 @@ -46,13 +52,13 @@ 用户还可以使用**完全限定域名(FQDN)**连接数据库,域名格式为`-graphd..svc.`: ```bash -kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -graphd-svc.default.svc.cluster.local -port 9669 -u root -p vesoft +kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -graphd-svc.default.svc.cluster.local -port -u -p ``` `CLUSTER_DOMAIN`的默认值为`cluster.local`。 -## 在Nebula Graph集群外部连接Nebula Graph数据库 +## 通过`NodePort`在Nebula Graph集群外部连接Nebula Graph数据库 -用户可创建`NodePort`类型的Service,通过节点IP和暴露的节点端口,从集群外部访问集群内部的服务。用户也可以使用云厂商提供的负载均衡服务,设置Service的类型为`LoadBalancer`。 +用户可创建`NodePort`类型的Service,通过节点IP和暴露的节点端口,从集群外部访问集群内部的服务。用户也可以使用云厂商(例如Azure、AWS等)提供的负载均衡服务,设置Service的类型为`LoadBalancer`。 `NodePort`类型的Service通过标签选择器`spec.selector`将前端的请求转发到带有标签`app.kubernetes.io/cluster: `、`app.kubernetes.io/component: graphd`的Graphd pod中。 @@ -120,13 +126,13 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never 4. 使用节点IP和上述映射的节点端口连接Nebula Graph。 ```bash - kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u root -p vesoft + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p ``` 示例如下: ```bash - [root@k8s4 ~]# kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console2 -addr 192.168.8.24 -port 32236 -u root -p vesoft + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console2 -addr 192.168.8.24 -port 32236 -u root -p vesoft If you don't see a command prompt, try pressing enter. (root@nebula) [(none)]> @@ -138,3 +144,95 @@ kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never - `-port`:Nebula Graph映射至节点的端口。本示例为`32236`。 - `-u`:Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。 - `-p`:用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 + + +## 通过`Ingress`在Nebula Graph集群外部连接Nebula Graph数据库 + +Nginx Ingress是Kubernetes Ingress的一个实现。Nginx Ingress通过Watch机制感知Kubernetes集群的Ingress资源,将Ingress规则生成Nginx配置,使Nginx能够转发7层流量。 + +用户可以通过HostNetwork和DaemonSet组合的模式使用Nginx Ingress从集群外部连接Nebula Graph集群。 + +由于使用HostNetwork,Nginx Ingress的Pod就不能被调度在同一个节点上。为了避免监听端口冲突,可以事先选择一些节点并将其标记为边缘节点,专门用于部署Nginx Ingress。然后Nginx Ingress以DaemonSet模式部署在这些节点上。 + +由于Ingress不支持TCP或UDP服务,为此nginx-ingress-controller使用`--tcp-services-configmap`和`--udp-services-configmap`参数指向一个ConfigMap,该ConfigMap中的键指需要使用的外部端口,值指要公开的服务的格式,值的格式为`<命名空间/服务名称>:<服务端口>`。 + +例如指向名为`tcp-services`的ConfigMap的配置如下: + +```yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: tcp-services + namespace: nginx-ingress +data: + # update + 9769: "default/nebula-graphd-svc:9669" +``` + +操作步骤如下: + +1. 创建名为`nginx-ingress-daemonset-hostnetwork.yaml`的文件。 + + 单击[nginx-ingress-daemonset-hostnetwork.yaml](https://github.com/vesoft-inc/nebula-operator/blob/{{operator.branch}}/config/samples/nginx-ingress-daemonset-hostnetwork.yaml)查看完整的YAML示例内容。 + + !!! note + + 上述YAML中的资源对象均使用`nginx-ingress`命名空间。用户可执行`kubectl create namesapce nginx-ingress`创建命名空间,或者自定义其他命名空间。 + +2. 为任一节点(本示例使用的节点名为`worker2`,IP为`192.168.8.160`)打上标签,以运行上述YAML文件中名为`nginx-ingress-controller`的DaemonSet。 + + ```bash + kubectl label node worker2 nginx-ingress=true + ``` + +3. 执行以下命令使Nginx Ingress在集群中生效。 + + ```bash + kubectl create -f nginx-ingress-daemonset-hostnetwork.yaml + ``` + + 返回: + + ```bash + configmap/nginx-ingress-controller created + configmap/tcp-services created + serviceaccount/nginx-ingress created + serviceaccount/nginx-ingress-backend created + clusterrole.rbac.authorization.k8s.io/nginx-ingress created + clusterrolebinding.rbac.authorization.k8s.io/nginx-ingress created + role.rbac.authorization.k8s.io/nginx-ingress created + rolebinding.rbac.authorization.k8s.io/nginx-ingress created + service/nginx-ingress-controller-metrics created + service/nginx-ingress-default-backend created + service/nginx-ingress-proxy-tcp created + daemonset.apps/nginx-ingress-controller created + ``` + + 成功部署Nginx Ingress后,由于Nginx Ingress中配置的网络类型为`hostNetwork`,因此用户可通过部署了Nginx Ingress的节点的IP(`192.168.8.160`)和外部端口(`9769`)访问Nebula Graph服务。 + +4. 执行以下命令部署连接Nebula Graph服务的Console并通过宿主机IP(本示例为`192.168.8.160`)和上述配置的外部端口访问Nebula Graph服务。 + + ```bash + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- -addr -port -u -p + ``` + + 示例: + + ```bash + kubectl run -ti --image vesoft/nebula-console:{{console.branch}} --restart=Never -- nebula-console -addr 192.168.8.160 -port 9769 -u root -p vesoft + ``` + + - `--image`:为连接Nebula Graph的工具Nebula Console的镜像。 + - ``:自定义的Pod名称。本示例为`nebula-console`。 + - `-addr`:部署Nginx Ingress的节点IP,本示例为`192.168.8.160`。 + - `-port`:外网访问使用的的端口。本示例设置为`9769`。 + - `-u`:Nebula Graph账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。 + - `-p`:用户名对应的密码。未启用身份认证时,密码可以填写任意字符。 + + 如果返回以下内容,说明成功连接数据库: + + ```bash + If you don't see a command prompt, try pressing enter. + + (root@nebula) [(none)]> + ``` diff --git a/docs-2.0/nebula-operator/7.operator-faq.md b/docs-2.0/nebula-operator/7.operator-faq.md index 3fefd19326b..eeedd78dcfc 100644 --- a/docs-2.0/nebula-operator/7.operator-faq.md +++ b/docs-2.0/nebula-operator/7.operator-faq.md @@ -6,7 +6,7 @@ ## Nebula Operator是否支持滚动升级Nebula Graph? -暂不支持。 +只支持升级2.5.x版本的Nebula Graph至2.6.x。 ## 使用本地存储是否可以保证集群稳定性? diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md new file mode 100644 index 00000000000..940f7fd3318 --- /dev/null +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md @@ -0,0 +1,66 @@ +# 自定义Nebula Graph集群的配置参数 + +Nebula Graph集群中Meta、Storage、Graph服务都有各自的配置,其在用户创建的CR实例(Nebula Graph集群)的YAML文件中被定义为`config`。`config`中的设置会被映射并加载到对应服务的ConfigMap中。 + +!!! note + + 暂不支持通过Helm自定义Nebula Graph集群的配置参数。 + +`config`结构如下: + +``` +Config map[string]string `json:"config,omitempty"` +``` + +## 前提条件 + +已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 + + +## 操作步骤 + +以下示例使用名为`nebula`的集群说明如何在YAML中为集群的Graph服务配置`config`: + +1. 执行以下命令进入`nebula`集群的编辑页面。 + + ```bash + kubectl edit nebulaclusters.apps.nebula-graph.io nebula + ``` + +2. 在YAML文件的`spec.graphd.config`配置项中,添加`enable_authorize`和`auth_type`。 + + ```yaml + apiVersion: apps.nebula-graph.io/v1alpha1 + kind: NebulaCluster + metadata: + name: nebula + namespace: default + spec: + graphd: + resources: + requests: + cpu: "500m" + memory: "500Mi" + limits: + cpu: "1" + memory: "1Gi" + replicas: 1 + image: vesoft/nebula-graphd + version: {{nebula.branch}} + storageClaim: + resources: + requests: + storage: 2Gi + storageClassName: gp2 + config: //为Graph服务自定义参数。 + "enable_authorize": "true" + "auth_type": "password" + ... + ``` + +在自定义参数`enable_authorize`和`auth_type`后,Graph服务对应的ConfigMap(`nebula-graphd`)中的配置将被覆盖。 + +## 更多信息 + +有关Meta、Storage、Graph服务的配置参数的详细介绍,参见[服务配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)。 + diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md new file mode 100644 index 00000000000..5c6bb49d6f8 --- /dev/null +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md @@ -0,0 +1,98 @@ +# 回收PV + +Nebula Operator使用持久化卷PV(Persistent Volume)和持久化卷声明PVC(Persistent Volume Claim)来存储持久化数据。如果用户不小心删除了一个Nebula Graph集群,PV和PVC对象及其数据仍可保留,以确保数据安全。 + +用户可以在集群的CR实例的配置文件中通过参数`enablePVReclaim`定义是否回收PV。 + +如果用户需要删除图空间并想保留相关数据,可以更新Nebula Graph集群,即设置`enablePVReclaim`为`true`。 + +## 前提条件 + +已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 + +## 操作步骤 + +以下示例使用名为`nebula`的集群说明如何设置`enablePVReclaim`: + +1. 执行以下命令进入`nebula`集群的编辑页面。 + + ```bash + kubectl edit nebulaclusters.apps.nebula-graph.io nebula + ``` + +2. 在YAML文件的`spec`配置项中,添加`enablePVReclaim`并设置其值为`true`。 + + ```yaml + apiVersion: apps.nebula-graph.io/v1alpha1 + kind: NebulaCluster + metadata: + name: nebula + spec: + enablePVReclaim: true //设置其值为true。 + graphd: + image: vesoft/nebula-graphd + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 1 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + imagePullPolicy: IfNotPresent + metad: + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + image: vesoft/nebula-metad + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 1 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + nodeSelector: + nebula: cloud + reference: + name: statefulsets.apps + version: v1 + schedulerName: default-scheduler + storaged: + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + image: vesoft/nebula-storaged + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 3 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + ... + ``` diff --git a/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md new file mode 100644 index 00000000000..70f9e9bf34c --- /dev/null +++ b/docs-2.0/nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md @@ -0,0 +1,104 @@ +# 均衡扩容后的Storage数据 + +用户在扩容Storage服务后,可以自主决定是否均衡Storage服务中的数据。本文介绍如何设置均衡Storage数据。 + +Nebula Graph的Storage服务的扩容分为两个阶段,第一个阶段等待所有扩容的Pods为`Ready`的状态;第二个阶段执行`BALANCE DATA`和`BALANCE LEADER`命令均衡数据。这两个阶段将控制器副本的扩容过程与均衡数据过程解耦,使用户可以选择在低流量时进行均衡数据操作,有效降低数据迁移对在线服务的影响。 + +用户可以在集群的CR实例的配置文件中通过参数`enableAutoBalance`来控制是否自动均衡数据。 + +## 前提条件 + +已使用K8s创建一个集群。具体步骤,参见[使用Kubectl创建Nebula Graph集群](../3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 + +## 操作步骤 + +以下示例使用名为`nebula`的集群说明如何设置`enableAutoBalance`: + +1. 执行以下命令进入`nebula`集群的编辑页面。 + + ```bash + kubectl edit nebulaclusters.apps.nebula-graph.io nebula + ``` + +2. 在YAML文件的`spec.storaged`配置项中,添加`enableAutoBalance`并设置其值为`true`。 + + ```yaml + apiVersion: apps.nebula-graph.io/v1alpha1 + kind: NebulaCluster + metadata: + name: nebula + spec: + graphd: + image: vesoft/nebula-graphd + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 1 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + imagePullPolicy: IfNotPresent + metad: + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + image: vesoft/nebula-metad + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 1 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + nodeSelector: + nebula: cloud + reference: + name: statefulsets.apps + version: v1 + schedulerName: default-scheduler + storaged: + enableAutoBalance: true //将其值设置为true时表示扩容后自动均衡Storage数据。 + dataVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + image: vesoft/nebula-storaged + logVolumeClaim: + resources: + requests: + storage: 2Gi + storageClassName: fast-disks + replicas: 3 + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 500m + memory: 500Mi + version: {{nebula.branch}} + ... + ``` + + - 当设置`enableAutoBalance`的值为`true`时,表示扩容后自动均衡Storage数据。 + + - 当设置`enableAutoBalance`的值为`false`时,表示扩容后不会均衡Storage数据。 + + - 当不设置`enableAutoBalance`参数时,默认扩容Storage后系统不会自动均衡Storage数据。 \ No newline at end of file diff --git a/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md b/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md new file mode 100644 index 00000000000..f11b56124a1 --- /dev/null +++ b/docs-2.0/nebula-operator/9.upgrade-nebula-cluster.md @@ -0,0 +1,194 @@ +# 升级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集群](3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md)。 + +本文示例中待升级的Nebula Graph版本为2.5.1,其YAML文件名为`apps_v1alpha1_nebulacluster.yaml`。 + +### 操作步骤 + +1. 查看集群中服务的镜像版本。 + + ```bash + kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c + ``` + + 返回: + + ```bash + 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修改至{{nebula.branch}}。 + + 修改后的YAML文件内容如下: + + ```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: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + 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: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + 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: {{nebula.branch}} //将值从v2.5.1修改至{{nebula.branch}}。 + 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中。 + + ```bash + kubectl apply -f apps_v1alpha1_nebulacluster.yaml + ``` + +4. 等待约2分钟后,执行以下命令可查看到服务的镜像版本变更为{{nebula.branch}}。 + + ```bash + kubectl get pods -l app.kubernetes.io/cluster=nebula -o jsonpath="{.items[*].spec.containers[*].image}" |tr -s '[[:space:]]' '\n' |sort |uniq -c + ``` + + 返回: + + ```bash + 1 vesoft/nebula-graphd:{{nebula.branch}} + 1 vesoft/nebula-metad:{{nebula.branch}} + 3 vesoft/nebula-storaged:{{nebula.branch}} + ``` + +## 使用Helm升级Nebula Graph集群 + +### 前提条件 + +已创建Nebula Graph集群。具体步骤,参见[使用Helm创建Nebula Graph集群](3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md)。 + +### 操作步骤 + +1. 更新Helm仓库,拉取最新的仓库资源。 + + ```bash + helm repo update + ``` + +2. 配置Helm的环境变量。 + + ```bash + export NEBULA_CLUSTER_NAME=nebula # Nebula Graph集群的名字。 + export NEBULA_CLUSTER_NAMESPACE=nebula # Nebula Graph集群所处的命名空间的名字。 + ``` + +3. 升级Nebula Graph集群。 + + 例如升级至{{nebula.branch}}Nebula Graph集群的命令如下。 + + ```bash + helm upgrade "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster \ + --namespace="${NEBULA_CLUSTER_NAMESPACE}" \ + --set nameOverride=${NEBULA_CLUSTER_NAME} \ + --set nebula.version={{nebula.branch}} + ``` + + `--set nebula.version`的值指需要升级集群的目标版本号。 + +4. 执行以下命令查看集群状态及集群版本。 + + 查看集群状态: + + ```bash + $ 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 + ``` + + 查看集群版本: + + ```bash + $ 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:{{nebula.branch}} + 1 vesoft/nebula-metad:{{nebula.branch}} + 3 vesoft/nebula-storaged:{{nebula.branch}} + ``` diff --git a/mkdocs.yml b/mkdocs.yml index 3a2d1840297..f1a5cdf5839 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -112,8 +112,8 @@ extra: release: 1.0.0 branch: master operator: - release: 0.8.0 - branch: v0.8.0 + release: 0.9.0 + branch: v0.9.0 nav: - PDF: ./pdf/NebulaGraph-CN.pdf @@ -453,16 +453,21 @@ nav: - 导出Nebula Graph数据: nebula-exchange/use-exchange/ex-ug-export-from-nebula.md - Exchange 常见问题: nebula-exchange/ex-ug-FAQ.md -# - Nebula Operator: -# - 什么是Nebula Operator: nebula-operator/1.introduction-to-nebula-operator.md -# - 使用流程: nebula-operator/6.get-started-with-operator.md -# - 部署Nebula Operator: nebula-operator/2.deploy-nebula-operator.md -# - 部署Nebula Graph集群: -# - 使用Kubectl部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md -# - 使用Helm部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md -# - 连接Nebula Graph数据库: nebula-operator/4.connect-to-nebula-graph-service.md -# - 故障自愈: nebula-operator/5.operator-failover.md -# - 常见问题: nebula-operator/7.operator-faq.md + - Nebula Operator: + - 什么是Nebula Operator: nebula-operator/1.introduction-to-nebula-operator.md + - 使用流程: nebula-operator/6.get-started-with-operator.md + - 部署Nebula Operator: nebula-operator/2.deploy-nebula-operator.md + - 部署Nebula Graph集群: + - 使用Kubectl部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl.md + - 使用Helm部署Nebula Graph集群: nebula-operator/3.deploy-nebula-graph-cluster/3.2create-cluster-with-helm.md + - 配置Nebula Graph集群: + - 自定义Nebula Graph集群的配置参数: nebula-operator/8.custom-cluster-configurations/8.1.custom-conf-parameter.md + - 回收PV: nebula-operator/8.custom-cluster-configurations/8.2.pv-reclaim.md + - 均衡扩容后的Storage数据: nebula-operator/8.custom-cluster-configurations/8.3.balance-data-when-scaling-storage.md + - 升级Nebula Graph集群: nebula-operator/9.upgrade-nebula-cluster.md + - 连接Nebula Graph数据库: nebula-operator/4.connect-to-nebula-graph-service.md + - 故障自愈: nebula-operator/5.operator-failover.md + - 常见问题: nebula-operator/7.operator-faq.md - Nebula Algorithm: nebula-algorithm.md