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

kubernetes+dubbo 架构集群内外网络通讯怎么解决

  •  
  •   symb0l · 2019-04-29 16:01:00 +08:00 · 9008 次点击
    这是一个创建于 2017 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在容器化的过程中,我们遇到了一个非常棘手的问题。玩过 k8s 的知道,k8s 有自己的一套网络管理机制,集群内的容器和容器之间是可以相互通信的。但是在容器化升级改造的过程中,不可能一步到位的将所有的服务全部迁移到 k8s 的容器当中来,毕竟新的技术在没有经过实践趟坑时,肯定不能轻易的全面铺开升级。那么就涉及到集群外的服务访问集群内的服务,集群内容器中的 ip 都是 k8s 管理的 ip,dubbo 服务注册的也是获取的容器内分配的 ip。比如我们的宿主主机 ip 是 172.10.15.xx,容器内的 ip 就是 10.10.2.x。群外的和宿主主机同网段的服务通过拿到 dubbo 的注册的 10.10.2.x 也根本没法访问容器内的 dubbo 服务,请问如何解决这个问题?

    9 条回复    2021-11-15 17:42:42 +08:00
    symb0l
        1
    symb0l  
    OP
       2019-04-29 18:06:49 +08:00
    v2ex 的老哥们,救命哇。。
    monsterxx03
        2
    monsterxx03  
       2019-04-29 18:10:29 +08:00
    给 k8s 内的 dubbo 服务设置一个 NodePort 类型的 service 不就完了吗: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
    symb0l
        3
    symb0l  
    OP
       2019-04-29 18:17:40 +08:00
    @monsterxx03 谢谢回答,有考虑过,但后期 K8S 节点扩容后,集群外服务往集群内的一些网络权限变更就得重新搞,一个服务就得开一个策略,假设有一百个服务,扩容一台节点,就得加一百条策略,网络工程师应该会砍死我,。
    monsterxx03
        4
    monsterxx03  
       2019-04-29 18:31:42 +08:00
    自建的话我也想不到什么好办法, 你们估计用的 flannel 之类的 overlay 网络. 在 aws 上的话可以通过 vpc cni plugin 直接给 pod 分配 vpc 里的 ip, 这样 k8s 内外的服务可以直接通过 ip 通信.

    我对 dubbo 不熟悉, overlay 网络, 你要内外通信, 必然需要一个 service 做 NodePort, 不知道 dubbo 有没有单端口的代理方案.
    YzSama
        5
    YzSama  
       2019-05-10 18:11:57 +08:00
    我猜楼主是想让研发的网络与集群内部网络通信。

    如果是这样的话,只需要进行打通就可以了。
    Ksmriacle
        6
    Ksmriacle  
       2020-06-08 15:40:07 +08:00
    兄弟解决了么
    symb0l
        7
    symb0l  
    OP
       2020-07-22 17:21:01 +08:00
    @Ksmriacle 不好意思,平时比较少登陆 v2ex

    目前是这样解决的,在容器部署模板里的 env 部分定义一个变量,并声明 valueFrom.fieldRef.fieldPath 的值为 status.hostIP,这样容器启动后就可以通过环境变量获取到宿主机的 IP 地址,将注册地址改为主机地址,外部 zookeeper 对主机地址可见即可。
    mrsupns
        8
    mrsupns  
       2020-09-17 10:04:24 +08:00
    能发一个 demo 吗
    monkeyWie
        9
    monkeyWie  
       2021-11-15 17:42:42 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:39 · PVG 09:39 · LAX 17:39 · JFK 20:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.