未分類 25 3 月 2021 新手求指教, springboot 部署到 k8s 上后如何进行服务调用(利用 k8s 原生的服务发现能力) 新手求指教, springboot 部署到 k8s 上后如何进行服务调用(利用 k8s 原生的服务发现能力) 資深大佬 : ldimple 8 在 springcloud 体系中我们都知道最简单地使用 RestTemplate 进行服务调用,如果是基于 springboot 和 k8s 构建的微服务呢? 大佬有話說 (13) 資深大佬 : vhui 试试 spring-cloud-kubernetes 主 資深大佬 : ldimple @vhui 嗯,我也看到网上推荐这个组件 資深大佬 : FreeEx 功能有重叠,感觉 spring cloud + k8s 存粹是脱裤子放屁多此一举。看错了,原来是 springboot + k8s,按照 k8s 那一套走即可。 資深大佬 : goodryb 盲猜内部调用走 service clusterip,对外提供服务走 ingress 或者统一的网关服务例如 kong 資深大佬 : wxsm @goodryb 走 ip 不如走域名 資深大佬 : puras 内部 ServerName:port 就行了吧 主 資深大佬 : ldimple @puras @FreeEx 所以 springboot 业务代码里面怎么调其他的服务呀,springcloud 是 Feign,那部署到 k8s 集群之后呢 資深大佬 : javapythongo @ldimple #7 继续用 fegin,不过要在注解上的 ip 属性写上 servername:port 走 k8s 自己的网络 資深大佬 : pavelpiero K8S 走内部调用坑蛮多的比如我司生产环境差不多有 6 套集群 虽然是在两个机房 但是同机房不同集群的机器没法基于服务名调用就很坑有些跨部门的调用发生了跨集群 就只能走域名后来为了迭代升级和避免意外的情况最终还是统一全都走域名调用了 資深大佬 : iminto 代码该咋样还咋样啊,只是 eureka 不需要了,springcloud gateway 里 Robin 策略也不需要了,spring-cloud config 也可以考虑替换 資深大佬 : namelosw 想用 Kubernetes 本身最简单的就是直接调 FQDN, 比如 foo.bar.my-namespace.svc.cluster-domain.example 这样, 如果同 cluster 同 namespace 之类的可以省略调后面的几段 資深大佬 : THESDZ @pavelpiero endpoint 解决集群外部访问问题 主 資深大佬 : ldimple @namelosw 像下那个大佬说的 endpoint 解决集群外部访问,这样是不是也可以省略 cluster 同 namespace 。