将springcloud集群部署在k8s上的一些想法
spring cloud 和k8s的简单对比如下:但是还有一点,感觉k8s在服务间调用的测试很不方便,如果本地启动一套k8s进行测试,对机器的要求实在太高了,就算是开发springcloud项目,本地起一套就已经够吃力了,但是起码本地还是能跑得起来。因此有了这样一个想法,将springcloud和k8s结合起来:服务发现和LBAPI网关配置管理容错限流这几项由springcloud负责;而发布和调
·
spring cloud 和k8s的简单对比如下:
但是还有一点,感觉k8s在服务间调用的测试很不方便,如果本地启动一套k8s进行测试,对机器的要求实在太高了,就算是开发springcloud项目,本地起一套就已经够吃力了,但是起码本地还是能跑得起来。因此有了这样一个想法,将springcloud和k8s结合起来:
- 服务发现和LB
- API网关
- 配置管理
- 容错限流
这几项由springcloud负责;而
- 发布和调度
- 自动伸缩和自愈
则由k8s负责;放弃流量治理功能(在自动伸缩和自愈以及容错限流的作用下,如果机器比较充裕,对于中小型的项目,个人感觉流量治理功能并不是很迫切的功能),因为pod一启动就会注册到服务注册中心,所以蓝绿部署的能力也就没有了,写到这里,突然感觉将springcloud和k8s结合起来不太香了。。。
要实现以上的目标,需要解决以下几个问题:
- Eruera/Nacos的pod需要绑定到固定的ip地址;
- 其他服务能够于Ekuera/Nacos通信;
- 服务间能够相互通信;
- 外界访问集群;
对应的解决方案如下:
- 通过NodeSelector可以将Eruera/Nacos的pod绑定到固定的ip地址,但是pod ip不是固定的,所以其他的pod中的服务要访问Eruera/Nacos,需要使用host ip+host Port;
- 如1所述;
- 服务间将pod id和port注册到Eruera/Nacos,服务间通过pod id和port通信;
- 网关对应的pod映射到宿主机,通过host ip+host Port提供对外访问。
上述方案有待后续实践检验!!!!
更多推荐
已为社区贡献2条内容
所有评论(0)