spring cloud 微服务, pod 注册到了 nacos ,spring cloud 网关调用的是注册到 nacos 上的微服务,没走k8s的 svc ,比如一个微服务 pod 副本,滚动更新的时候,nacos 上会有两个 实例,一个是 Running 的,另外一个是 Terminating,Terminating 的要几秒或者更长的时间,nacos 才会自动踢出掉。假如这时候有请求进来,就会请求到 Terminating 的 pods 上,导致服务有一会儿访问异常。
nacos
支持k8s服务发现的微服务,可以接入k8s的服务发现,nacos只保留配置中心功能。
但如果用到dubbo,还是要用nacos的服务中心的,因为dubbo目前还不支持k8s的服务发现功能。
总的来说有2种方案:
1、k8s部署nacos,使用nacos的服务中心、配置中心;
2、k8s部署nacos,使用k8s的服务中心,nacos只用配置中心;
目前想改造下,spring cloud 网关 去调用 k8s 的对应服务的 svc,但是 spring cloud gateway 调用 k8s svc , svc 做负载均衡?会不会有性能影响?去掉了nacos 服务中心,后续做灰度发布是不是会好做一点,比如集成 istio 一个service mesh 去做。
不知道有没有朋友做过类似的方案,能分享分享经验。或者有没有更好的实现办法?