新手求指教, springboot 部署到 k8s 上后如何进行服务调用(利用 k8s 原生的服务发现能力)

2021-03-10 18:09:56 +08:00
 ldimple
在 springcloud 体系中我们都知道最简单地使用 RestTemplate 进行服务调用,如果是基于 springboot 和 k8s 构建的微服务呢?
2985 次点击
所在节点    Kubernetes
16 条回复
vhui
2021-03-10 18:12:58 +08:00
试试 spring-cloud-kubernetes
ldimple
2021-03-10 18:35:22 +08:00
@vhui 嗯,我也看到网上推荐这个组件
FreeEx
2021-03-10 19:37:49 +08:00
功能有重叠,感觉 spring cloud + k8s 存粹是脱裤子放屁多此一举。
看错了,原来是 springboot + k8s,按照 k8s 那一套走即可。
goodryb
2021-03-10 20:33:31 +08:00
盲猜内部调用走 service clusterip,对外提供服务走 ingress 或者统一的网关服务例如 kong
wxsm
2021-03-10 22:21:41 +08:00
@goodryb 走 ip 不如走域名
puras
2021-03-10 22:59:57 +08:00
内部 ServerName:port 就行了吧
ldimple
2021-03-11 00:05:25 +08:00
@puras
@FreeEx 所以 springboot 业务代码里面怎么调其他的服务呀,springcloud 是 Feign,那部署到 k8s 集群之后呢
javapythongo
2021-03-11 01:28:56 +08:00
@ldimple #7 继续用 fegin,不过要在注解上的 ip 属性写上 servername:port 走 k8s 自己的网络
pavelpiero
2021-03-11 09:29:30 +08:00
K8S 走内部调用坑蛮多的
比如我司生产环境差不多有 6 套集群 虽然是在两个机房 但是同机房不同集群的机器没法基于服务名调用就很坑
有些跨部门的调用发生了跨集群 就只能走域名
后来为了迭代升级和避免意外的情况最终还是统一全都走域名调用了
iminto
2021-03-11 10:58:53 +08:00
代码该咋样还咋样啊,只是 eureka 不需要了,springcloud gateway 里 Robin 策略也不需要了,spring-cloud config 也可以考虑替换
namelosw
2021-03-11 15:31:02 +08:00
想用 Kubernetes 本身最简单的就是直接调 FQDN, 比如 foo.bar.my-namespace.svc.cluster-domain.example 这样, 如果同 cluster 同 namespace 之类的可以省略调后面的几段
THESDZ
2021-03-11 16:57:07 +08:00
@pavelpiero endpoint 解决集群外部访问问题
ldimple
2021-03-12 17:24:02 +08:00
@namelosw 像下楼那个大佬说的 endpoint 解决集群外部访问,这样是不是也可以省略 cluster 同 namespace 。
jaylee4869
2021-03-14 19:19:41 +08:00
用集群内的 fqdn 域名来进行 RPC 。
ldimple
2021-03-16 12:48:00 +08:00
@javapythongo 大佬,可以加微信详细说说吗,我刚入门,连简单的两个 Demo 都跑不起来,用了 feign 和 springcloud k8s
dandankele
183 天前
@pavelpiero 走域名具体是咋走的?是内网分配的域名吗?也就是说内部搭建一个跨集群的 dns 服务?还是说走的公网域名,利用公网 dns ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX