K8S Nubale3.3部署
192.168.58.106 | master |
---|---|
192.168.83.227 | node |
192.168.83.228 | node |
192.168.83.232 | node |
官方文档
https://docs.nebula-graph.com.cn/3.3.0/nebula-operator/4.connect-to-nebula-graph-service/
部署本地卷插件(如果本地已经部署过一个可跳过)
代码语言:javascript复制curl https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/archive/v2.4.0.zip
unzip v2.4.0.zip
修改 v2.4.0/helm/provisioner/values.yaml classes 部分:
将 hostDir: /mnt/fast-disks
改成 hostDir: /mnt/disks
,
storageClass: true
改成 storageClass: true
。然后执行:
helm install local-static-provisioner --namespace default sig-storage-local-static-provisioner/helm/provisioner
代码语言:javascript复制# 查看 local-static-provisioner 部署情况
$ helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
local-volume-provisioner default 1 2021-02-10 11:06:34.3540341 0800 CST deployed provisioner-2.4.0 2.4.0
安装 Helm
代码语言:javascript复制wget https://get.helm.sh/helm-v3.5.2-linux-amd64.tar.gz
tar -zxvf helm/helm-v3.5.2-linux-amd64.tgz
mv linux-amd64/helm /usr/bin/helm
安装 NebulaGraph Operator
添加 NebulaGraph Operator chart 仓库至 Helm。
代码语言:javascript复制helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
拉取最新的 Helm 仓库。
代码语言:javascript复制helm repo update
参考 Helm 仓库获取更多helm repo
相关信息。
安装 NebulaGraph Operator。
代码语言:javascript复制helm install nebula-operator nebula-operator/nebula-operator --namespace= --version=${chart_version}
例如,安装1.3.0版的 Operator 命令如下。
代码语言:javascript复制helm install nebula-operator nebula-operator/nebula-operator --namespace=nebula-operator-system --version=1.3.0
- 上述命令中的
nebula-operator-system
为用户创建的命名空间。如果用户未创建该命名空间,可以执行kubectl create namespace nebula-operator-system
进行创建。用户也可创建其他命名空间。 1.3.0
为 NebulaGraph Operator chart 的版本。当 Chart 中只有一个默认版本时,可不指定。执行helm search repo -l nebula-operator
查看 Chart 版本。
用户可在执行安装 NebulaGraph Operator chart 命令时自定义其配置。更多信息,查看下文自定义配置 Chart。
如果服务器无法连接外网,可以下载 NebulaGraph Operator chart 至本地,再传到服务器。
代码语言:javascript复制helm pull nebula-operator/nebula-operator --version=1.3.0
--version
: 升级版本号。如不指定,则默认为最新版本。
卸载 NebulaGraph Operator
卸载 NebulaGraph Operator chart。
代码语言:javascript复制helm uninstall nebula-operator --namespace=
删除 CRD。
代码语言:javascript复制kubectl delete crd nebulaclusters.apps.nebula-graph.io
使用 Kubectl 部署 NebulaGraph 集群
前提条件
- 安装 NebulaGraph Operator
设置 Kubernetes node节点
代码语言:javascript复制# 下面是 Kubernetes 节点列表,我们需要设置 node 节点的调度标签。可以将 192.168.83.227,192.168.83.228,192.168.83.232 打上 nebula=cloud: "cloud" 的标签。
kubectl lable node 192.168.83.227 nebula="cloud" --overwrite
kubectl lable node 192.168.83.228 nebula="cloud" --overwrite
kubectl lable node 192.168.83.232 nebula="cloud" --overwrite
创建集群
本文以创建名为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: 3
image: vesoft/nebula-graphd
version: v3.3.0
logVolumeClaim:
resources:
requests:
storage: 2Gi
storageClassName: fast-disks
metad:
resources:
requests:
cpu: "500m"
memory: "500Mi"
limits:
cpu: "1"
memory: "1Gi"
replicas: 3
image: vesoft/nebula-metad
version: v3.3.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: 3
image: vesoft/nebula-storaged
version: v3.3.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.3.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.3.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.3.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。 | 镜像拉取策略。 |
创建 NebulaGraph 集群。
代码语言:javascript复制kubectl create -f apps_v1alpha1_nebulacluster.yaml
查看 NebulaGraph 集群状态。
代码语言:javascript复制kubectl get nebulaclusters.apps.nebula-graph.io nebula
使用 Helm 部署 NebulaGraph 集群
前提条件
- 安装 NebulaGraph Operator
创建 NebulaGraph 集群
添加 NebulaGraph Operator chart 仓库至 Helm(如已创添加,略过前面 1 至 2 步,从第 3 步开始执行)。
代码语言:javascript复制helm repo add nebula-operator https://vesoft-inc.github.io/nebula-operator/charts
更新 Helm 仓库,拉取最新仓库资源。
代码语言:javascript复制helm repo update
设置 Kubernetes node节点
代码语言:javascript复制# 下面是 Kubernetes 节点列表,我们需要设置 node 节点的调度标签。可以将 192.168.83.227,192.168.83.228,192.168.83.232 打上 nebula=cloud: "cloud" 的标签。
kubectl lable node 192.168.83.227 nebula="cloud" --overwrite
kubectl lable node 192.168.83.228 nebula="cloud" --overwrite
kubectl lable node 192.168.83.232 nebula="cloud" --overwrite
配置 Helm 的环境变量。
代码语言:javascript复制export NEBULA_CLUSTER_NAME=nebula # NebulaGraph 集群的名字。
export NEBULA_CLUSTER_NAMESPACE=nebula # NebulaGraph 集群所处的命名空间的名字。
export STORAGE_CLASS_NAME=fast-disks # NebulaGraph 集群的 StorageClass。
为 NebulaGraph 集群创建命名空间(如已创建,略过此步)。
代码语言:javascript复制kubectl create namespace "${NEBULA_CLUSTER_NAMESPACE}"
创建 NebulaGraph 集群。
代码语言:javascript复制helm install "${NEBULA_CLUSTER_NAME}" nebula-operator/nebula-cluster
--namespace="${NEBULA_CLUSTER_NAMESPACE}"
--set nameOverride=${NEBULA_CLUSTER_NAME}
--set nebula.storageClassName="${STORAGE_CLASS_NAME}"
查看 NebulaGraph 集群创建状态。
代码语言:javascript复制kubectl -n "${NEBULA_CLUSTER_NAMESPACE}" get pod -l "app.kubernetes.io/cluster=${NEBULA_CLUSTER_NAME}"
返回示例:
代码语言:javascript复制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
删除集群
使用 Helm 删除集群的命令如下:
代码语言:javascript复制helm uninstall "${NEBULA_CLUSTER_NAME}" --namespace="${NEBULA_CLUSTER_NAMESPACE}"
或者使用真实值删除集群,例如:
代码语言:javascript复制helm uninstall nebula --namespace=nebula