- nebula 版本:V2.6.2
- 部署方式:分布式
- 安装方式:基于k8s原生安装
问题描述:
我想在k8s上部署NebulaGraph,目前我从官网上了解到可以用以下两种方式在k8s安装部署:
- Nebula Operator (https://docs.nebula-graph.com.cn/2.6.2/nebula-operator/3.deploy-nebula-graph-cluster/3.1create-cluster-with-kubectl/)
- 基于Helm进行集群部署(https://nebula-graph.com.cn/posts/how-to-deploy-nebula-graph-in-kubernetes/)
我的需求:
我不想依赖Operator和Helm进行部署,而是基于k8s原始的yaml来进行安装部署,不依赖helm和Nebula Operator,请问有相关的文档吗?以及基于k8s部署,如何进行磁盘挂载和映射的文档?
wey
2
Helm 已经弃用了,现在 Operator 是唯一的方式。
你可以用operator部署一套,然后参考其中创建的所有资源,为了方便做这件事儿,我做了这个项目:https://github.com/wey-gu/nebula-operator-kind 如果你本地有docker 就可以一行拉起来一套环境,然后你 kubectl get all 就能看到所有的资源了。
kubectl get all
NAME READY STATUS RESTARTS AGE
pod/nebula-graphd-0 1/1 Running 0 3d6h
pod/nebula-metad-0 1/1 Running 0 3d6h
pod/nebula-storaged-0 1/1 Running 0 3d6h
pod/nebula-storaged-1 1/1 Running 0 3d6h
pod/nebula-storaged-2 1/1 Running 0 3d6h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d6h
service/nebula-graphd-svc ClusterIP 10.96.128.47 <none> 9669/TCP,19669/TCP,19670/TCP 3d6h
service/nebula-graphd-svc-nodeport NodePort 10.96.191.111 <none> 9669:30000/TCP,19669:30001/TCP 3d6h
service/nebula-metad-headless ClusterIP None <none> 9559/TCP,19559/TCP,19560/TCP 3d6h
service/nebula-storaged-headless ClusterIP None <none> 9779/TCP,19779/TCP,19780/TCP,9778/TCP 3d6h
NAME READY AGE
statefulset.apps/nebula-graphd 1/1 3d6h
statefulset.apps/nebula-metad 1/1 3d6h
statefulset.apps/nebula-storaged 3/3 3d6h
嗯,我大致明白您的意思。就是说自己基于nebula operator部署一套nebulagraph集群后,再通过k8s命令,自己整理一套yaml安装脚本。是这个意思吧?
我看了您提供的https://github.com/wey-gu/nebula-operator-kind,没有看的特别的明白,个人对k8s掌握的不是特别的熟悉,您这边有原生yaml安装nebulagraph的配置吗?类似于flink官网这样的k8s安装模式:Kubernetes 设置 | Apache Flink
wey
5
是的,https://github.com/wey-gu/nebula-operator-kind 是一个帮你安装一个在 docker 内置的小 k8s 环境,然后在里边自动部署所有 nebula-operator 的依赖和配置然后再自动部署 nebula operator,然后再部署一个小的 nebula 集群的一键安装工具(甚至包括storage provider)。安装好了,您自己可以获取 pod 的 yaml。
Nebula 是有状态的应用,一般至少用 statefulset 部署,这部分模板在 operator 的仓库里应该也可以获取不过用 operator 来起来再 get 看可能最方便。
我看到雷神老师在 typing 了,等他给你更准确的信息哈~~~~
1 个赞
我们早期有提供helm的部署方式,后来更新到了operator方式,目前安装也非常简洁,helm一条命令就能搞定,如果你使用过程中有不理解的地方或者文档描述不准确,我们可以随时解答
1 个赞
嗯,感谢您的回答!是这样的,operator方式确实大大降低了安装部署的门槛,就像部署hadoop生态用CDH管理一样,但是有些项目部署场景,不能够直接用CDH,而需要用原生部署。所以我才需要扒开operator的yaml,自己拼装。
我想请教一下,operator安装的NebulaGraph集群,其storage存储的数据放在了那里?如果服务重启,或者pod删除后新建,会丢数据吗?能指定宿主机的挂载盘吗?
存储的数据要看你使用哪种storage provisioner,本地存储还是网络存储,服务重启磁盘是不会删除的,这个由配置项控制;指定盘挂载是可以的,但目前是交由operator控制了,底层是storage controller控制,目前不支持指定挂载。
好的,明白了,感谢您的耐心解答!我先消化两位老师的内容,后续有问题再来叨扰!再次感谢!
wey
11
突然又想到一个思路,开发试玩 k8s 上的 nebula 的话,可以用 kompose 这个项目把 docker-compose 转换为 k8s 资源
很惊喜能在周末得到您的回复,显然您非常热爱自己的工作和产品,非常值得我学习。您目前提供的有两种方式:一、基于已部署operator进行分析和转化,二、基于已部署的docker-compose进行学习和转换。我将在接下来的时间认真分析和研究一下。再次感谢!
wey
13
哈~ 二只是转换 docker-compose 的 yaml 到 k8s 的资源的 yaml,不需要 docker compose 部署应该。
system
关闭
14
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。