spring cloud 和k8s的简单对比如下:
在这里插入图片描述

但是还有一点,感觉k8s在服务间调用的测试很不方便,如果本地启动一套k8s进行测试,对机器的要求实在太高了,就算是开发springcloud项目,本地起一套就已经够吃力了,但是起码本地还是能跑得起来。因此有了这样一个想法,将springcloud和k8s结合起来:

  • 服务发现和LB
  • API网关
  • 配置管理
  • 容错限流

这几项由springcloud负责;而

  • 发布和调度
  • 自动伸缩和自愈

则由k8s负责;放弃流量治理功能(在自动伸缩和自愈以及容错限流的作用下,如果机器比较充裕,对于中小型的项目,个人感觉流量治理功能并不是很迫切的功能),因为pod一启动就会注册到服务注册中心,所以蓝绿部署的能力也就没有了,写到这里,突然感觉将springcloud和k8s结合起来不太香了。。。

要实现以上的目标,需要解决以下几个问题:

  1. Eruera/Nacos的pod需要绑定到固定的ip地址;
  2. 其他服务能够于Ekuera/Nacos通信;
  3. 服务间能够相互通信;
  4. 外界访问集群;

对应的解决方案如下:

  1. 通过NodeSelector可以将Eruera/Nacos的pod绑定到固定的ip地址,但是pod ip不是固定的,所以其他的pod中的服务要访问Eruera/Nacos,需要使用host ip+host Port;
  2. 如1所述;
  3. 服务间将pod id和port注册到Eruera/Nacos,服务间通过pod id和port通信;
  4. 网关对应的pod映射到宿主机,通过host ip+host Port提供对外访问。

上述方案有待后续实践检验!!!!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐