分布式部署-meta容器重启ip改变

部署多个docker容器,配置多个meta副本,如果某个meta服务所在的容器重启,容器ip改变,是不是要修改配置文件中的meta_server_addrs,重启所有的服务,这个meta服务才能再次被使用?

如果是容器化部署,使用 service name 或者 k8s 中的域名来配置,不要设置 container 的 IP

1 个赞

谢谢回复,有这个考虑,但我看源码应该需要几台机器配几个域名吧?应该是按逗号分隔,不能按服务给一个域名吧?

在 k8s 中肯定是一个服务一个域名,docker 中也类似

但是如果我们的服务启了多个容器,每个容器都启了meta服务,一个域名不行吧?里面是按meta_server逗号分隔,一个域名解出来一个IP列表也用不了

这个怎么理解,能不能给个部署方式的图示?


就上面这种方式,假如nebula服务的域名是nebulaservice.kube-system.svc.cluster.local,那meta配置应该是meta_server_addrs=nebulaservice.kube-system.svc.cluster.local,这个域名解析结果正常应该有3个IP,但是NetworkUtils::toHosts接口无法做这种处理吧,需要meta_server_addrs配置三个域名吧

想问一下在 k8s 环境下这样部署的目的是什么? 为什么在一个 Container 中部署三个 service 进程,一般都是一个容器只包含一个服务。

还是说你图中画的容器不是 container 的概念,是指的 Pod?不是很理解 k8s 环境下为什么这么部署,因为这样会有很多的问题,无论是管理还是运维都很难做。举个简单例子,如果 graph 进程退出,在 k8s 中只能重启三个服务,storage/meta 在没出问题的情况下重启,这简直是不可接受的。

感谢您的建议,图中容器就是container,这样部署确实存在很多问题。那如果按下面这样部署,meta服务只有一个域名,meta_server_addrs的配置就只配置为一个域名,NetworkUtils::toHosts接口无法按照预期解出三个IP吧?应该得想办法为每个meta服务设置一个域名,一共设置三个域名吧

首先需要明确的一点:一个域名不可能解析出三个 ip 的。

你是想自己用 k8s 部署 nebula cluster 吗?如果是这样,更建议使用 nebula 维护的 nebula-operator 项目 在 k8s 集群中部署,你只要指定每个服务启动几个实例就可以了,不用再规划如何分布每个服务,nebula-operator 会根据每个服务的特点自动的调度到合适的机器节点,可以极大的简化 k8s 的运维。

是的,准备引入nebula,自己用k8s部署。总之,感谢建议,后续尝试一下nebula-operator~

好的,有 k8s 相关问题可以直接 @kevin.qiao ,他是 nebula-operator 的作者。

其他任何疑问可以找 @steam

1 个赞

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。