SpringCloud 本地服务如何注册到 K8s 集群中 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Weixk
V2EX    问与答

SpringCloud 本地服务如何注册到 K8s 集群中

  •  
  •   Weixk 2020-07-28 02:37:13 +08:00 3297 次点击
    这是一个创建于 1978 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。 目前想到的一种方案是 K8s 集群的 eureka 开放 NodePort, 本地服务注册上去。但是这里有个问题,K8s 中的微服务服务注册到 eureka 都是 Pod IP,本地服务注册上去是大网 IP 。虽然 K8s 中的服务能通过大网 IP 访问本地服务,但是本地服务无法通过 Pod IP 访问集群中的服务。请教一下,大家的解决方案是什么?

    第 1 条附言    2020-07-28 23:47:27 +08:00
    最后是使用了阿里开源的 kt connect,满足了我的需求
    https://github.com/alibaba/kt-connect
    实际上在集群内外启动了双向代理转发消息,本地服务在 idea 中配置代理即可注册到集群中
    https://alibaba.github.io/kt-connect/#/en-us/guide/how-to-use-in-idea
    感谢各位建议,感谢 alibaba [点赞]
    14 条回复    2020-07-28 14:51:19 +08:00
    amrom
        1
    amrom  
       2020-07-28 04:09:57 +08:00
    今天看书发现有个方案可以解决你的问题,k8s 可以代理“遗留系统”,就是空 service,没有具体的 pod,只是代理端口用,放你这里貌似可以解决问题,我还在验证,蹲一手更好方案
    wenbinwu
        3
    wenbinwu  
       2020-07-28 06:19:14 +08:00
    自定义 EurekaInstanceConfigBean setInstanceId ?
    wenbinwu
        4
    wenbinwu  
       2020-07-28 06:19:27 +08:00
    setHostname ^^
    Weixk
        5
    Weixk  
    OP
       2020-07-28 09:38:09 +08:00
    @wenbinwu 这样生产环境和开发环境用的代码就变得有差异了,而且集群内部要被外部访问到还得给每个服务开 service
    asilin
        6
    asilin  
       020-07-28 09:38:48 +08:00
    1. 如果本地服务运行在 k8s 集群节点上,那么本地服务是可以直接访问 Pod IP 的;
    2. 如果本地服务没有运行在 k8s 集群节点上,那么有两种解决方案:
    - 将这个节点加入到 k8s 集群中,并设置 taint 不运行任何 Pod;
    - 本地服务所在主机使用 iptables 进行透明代理

    目前我们采用的是 2 中的第二种方式。
    NoirStrike
        7
    NoirStrike  
       2020-07-28 09:41:51 +08:00
    意思是直接访问 pod? svc 有个东西叫 headless
    rrfeng
        8
    rrfeng  
       2020-07-28 09:49:55 +08:00 via Android
    service 还有个概念叫 externalName
    Weixk
        9
    Weixk  
    OP
       2020-07-28 10:01:30 +08:00
    @asilin 本地服务其实是指我的 idea 启动的微服务,用的是 windows 机器,想接入到我们的 k8s 集群中和其他服务能正常交互。
    asilin
        10
    asilin  
       2020-07-28 10:10:38 +08:00
    @Weixk 可以的,我们的本地服务有时也是在开发同学的机器上,这里的 iptables 只是举一个例子,对于 Mac 或者 Windows,应该也有相应的方案来实现同样的效果。
    Weixk
        11
    Weixk  
    OP
       2020-07-28 12:47:28 +08:00
    @asilin 比如,在 k8s 集群中的服务 pod ip 是 10.244.1.*,这时候本地服务调用这个 ip 是不通的。你的意思是通过 iptables 类似的工具将目的 ip 的请求转到集群内?
    baiyi
        12
    baiyi  
       2020-07-28 13:15:02 +08:00
    如果是调试,可是使用 telepresence,它会建立一个代理,转发集群内的请求,也让你本地的请求可以解析到集群里

    https://github.com/telepresenceio/telepresence
    asilin
        13
    asilin  
       2020-07-28 13:36:54 +08:00
    @Weixk 是的,我们是在路由器上面做的透明转发,所以无所谓本地服务的操作系统。
    vcode
        14
    vcode  
       2020-07-28 14:51:19 +08:00
    我们的方案是在服务上架个 vpn,本地流量进 vpn 再转发进 pod 服务里
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2767 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:12 PVG 10:12 LAX 18:12 JFK 21:12
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86