关于spring cloud 在k8s排程问题
来源:7-13 部署我们的微服务
qq_胖胖儿_0
2018-10-19
老师,听了你的课受益匪浅,但是由于自己能力有限还是有些不太理解的地方
1.spring cloud和k8s都有负载均衡功能,他们两会不会有冲突?如果是二选一,老师建议一般用谁的负载均衡?有什么需要注意的?
2.Eureka一般是多中心,这个在k8s怎么配置的?我打算配置3个中心,相互注册,配置如下:
配置中心,自己注册到自己。(一般来说不用k8s,我们会在defaultZonde写多个中心地址相互注册,但是k8s里面我不知道怎么写,我理解是通过eureka-server这个来找到clusterIP,在通过k8s自动负载其他两个pod上)
然后我建立一个yaml,建立一个deploy,有三个pod,建立一个svc,可以在node上访问,方便查看。
启动都是正常的,但是我登录到Eureka发现,他们好像全部的是独立运行的,每个pod上都是自己注册自己,并没有相互注册
其中一个pod
另一个pod
是不是Eureka不能这么用?还有spring cloud其他微服务如果同时要允许多个副本,有什么要注意的吗?
谢谢老师。
1回答
-
1. 冲突倒是不算,但它们各自都有自己的服务发现、负载均衡方案,你可以舍弃springcloud的相关模块,直接使用k8s的服务发现。也可以不用k8s的而使用springcloud内部的。甚至可以两种服务发现并存,不同的场景使用不同的方案。这个具体就需要根据你的业务、架构情况来选择。前提是先了解k8s的服务发现方案和springcloud的服务发现方案各自的功能、特点,最后在确定哪个更适合。
2. eureka多中心我理解是类似zookeeper的集群,多个实例保证高可用外还有类似选举投票的功能,所以它是有状态的实例,就是每个实例并不是完全对等的,这种情况就会出现你说的这个问题了,如果你用deployment启动三个实例就是对等的,会导致各自为政,互不关心。这时候就需要用到statefulset了,k8s会对每个实例加以区分,你在运行的程序中得到并利用每个实例的id。从而使每个实例产生不同的行为。具体statefulset的细节你可以google一下
012018-10-22
相似问题