前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >kubernetes+dubbo架构集群内外网络通讯解决方案

kubernetes+dubbo架构集群内外网络通讯解决方案

作者头像
kl博主
发布2023-11-18 11:12:15
1480
发布2023-11-18 11:12:15
举报
文章被收录于专栏:kl的专栏kl的专栏

前言碎语

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

2018/11/8补充网络图谱:

解决方案

改造dubbo,将通过网卡选址改成通过kubernetes-client直接获取k8s集群内的信息,具体是将选址拿到的pod中的ip去k8s客户端拿到的pod列表筛选出pod的所在的宿主主机的ip+service暴露的端口,然后将这个注册到dubb的注册中心,那么集全外的服务拿到的地址就是172.10.15.xx:xxxx这样的地址,当然就可以直接和pod通讯了。

kubernetes-client的坐标:https://github.com/fabric8io/kubernetes-client

如图,我们可以通过k8s的api拿到集群内的所有信息,然后我们通过pod的ip+资源的标签来确定和pod相关的宿主主机以及暴露的service

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档