spring cloud gateway 能否直接调用 k8s svc 地址,进行访问,跟实现灰度发布?

spring cloud 微服务, pod 注册到了 nacos ,spring cloud 网关调用的是注册到 nacos 上的微服务,没走k8s的 svc ,比如一个微服务 pod 副本,滚动更新的时候,nacos 上会有两个 实例,一个是 Running 的,另外一个是 Terminating,Terminating 的要几秒或者更长的时间,nacos 才会自动踢...显示全部

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 去做。

不知道有没有朋友做过类似的方案,能分享分享经验。或者有没有更好的实现办法?

收起
参与5

查看其它 1 个回答mtming333的回答

mtming333mtming333课题专家组系统架构师某电子支付

“ 另外一个是 Terminating,Terminating 的要几秒或者更长的时间,nacos 才会自动踢出掉。假如这时候有请求进来,就会请求到 Terminating 的 pods 上,导致服务有一会儿访问异常。 ”

关于这点,可以给pod中增加优雅停止的功能,在终结pod前先把微服务停止,一般还可以限制优雅停止最长时限,比如30秒。

互联网服务 · 2021-07-02
浏览2433

回答者

mtming333
系统架构师某电子支付
擅长领域: 云计算容器容器云

mtming333 最近回答过的问题

回答状态

  • 发布时间:2021-07-02
  • 关注会员:3 人
  • 回答浏览:2433
  • X社区推广