V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ldimple
V2EX  ›  Kubernetes

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

  •  
  •   ldimple · 2021-03-10 18:09:56 +08:00 · 2987 次点击
    这是一个创建于 1389 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 springcloud 体系中我们都知道最简单地使用 RestTemplate 进行服务调用,如果是基于 springboot 和 k8s 构建的微服务呢?
    16 条回复    2024-06-27 14:16:02 +08:00
    vhui
        1
    vhui  
       2021-03-10 18:12:58 +08:00
    试试 spring-cloud-kubernetes
    ldimple
        2
    ldimple  
    OP
       2021-03-10 18:35:22 +08:00
    @vhui 嗯,我也看到网上推荐这个组件
    FreeEx
        3
    FreeEx  
       2021-03-10 19:37:49 +08:00
    功能有重叠,感觉 spring cloud + k8s 存粹是脱裤子放屁多此一举。
    看错了,原来是 springboot + k8s,按照 k8s 那一套走即可。
    goodryb
        4
    goodryb  
       2021-03-10 20:33:31 +08:00
    盲猜内部调用走 service clusterip,对外提供服务走 ingress 或者统一的网关服务例如 kong
    wxsm
        5
    wxsm  
       2021-03-10 22:21:41 +08:00 via iPhone
    @goodryb 走 ip 不如走域名
    puras
        6
    puras  
       2021-03-10 22:59:57 +08:00
    内部 ServerName:port 就行了吧
    ldimple
        7
    ldimple  
    OP
       2021-03-11 00:05:25 +08:00
    @puras
    @FreeEx 所以 springboot 业务代码里面怎么调其他的服务呀,springcloud 是 Feign,那部署到 k8s 集群之后呢
    javapythongo
        8
    javapythongo  
       2021-03-11 01:28:56 +08:00 via iPhone
    @ldimple #7 继续用 fegin,不过要在注解上的 ip 属性写上 servername:port 走 k8s 自己的网络
    pavelpiero
        9
    pavelpiero  
       2021-03-11 09:29:30 +08:00
    K8S 走内部调用坑蛮多的
    比如我司生产环境差不多有 6 套集群 虽然是在两个机房 但是同机房不同集群的机器没法基于服务名调用就很坑
    有些跨部门的调用发生了跨集群 就只能走域名
    后来为了迭代升级和避免意外的情况最终还是统一全都走域名调用了
    iminto
        10
    iminto  
       2021-03-11 10:58:53 +08:00
    代码该咋样还咋样啊,只是 eureka 不需要了,springcloud gateway 里 Robin 策略也不需要了,spring-cloud config 也可以考虑替换
    namelosw
        11
    namelosw  
       2021-03-11 15:31:02 +08:00
    想用 Kubernetes 本身最简单的就是直接调 FQDN, 比如 foo.bar.my-namespace.svc.cluster-domain.example 这样, 如果同 cluster 同 namespace 之类的可以省略调后面的几段
    THESDZ
        12
    THESDZ  
       2021-03-11 16:57:07 +08:00
    @pavelpiero endpoint 解决集群外部访问问题
    ldimple
        13
    ldimple  
    OP
       2021-03-12 17:24:02 +08:00
    @namelosw 像下楼那个大佬说的 endpoint 解决集群外部访问,这样是不是也可以省略 cluster 同 namespace 。
    jaylee4869
        14
    jaylee4869  
       2021-03-14 19:19:41 +08:00
    用集群内的 fqdn 域名来进行 RPC 。
    ldimple
        15
    ldimple  
    OP
       2021-03-16 12:48:00 +08:00 via Android
    @javapythongo 大佬,可以加微信详细说说吗,我刚入门,连简单的两个 Demo 都跑不起来,用了 feign 和 springcloud k8s
    dandankele
        16
    dandankele  
       184 天前
    @pavelpiero 走域名具体是咋走的?是内网分配的域名吗?也就是说内部搭建一个跨集群的 dns 服务?还是说走的公网域名,利用公网 dns ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:37 · PVG 05:37 · LAX 13:37 · JFK 16:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.