SpringCloud容器化服务发现及注册实现方法解析

 更新时间:2020年08月31日 08:39:12   作者:qq5f3a7137e1f78  
这篇文章主要介绍了SpringCloud容器化服务发现及注册实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

springclould项目容器化过程中, 可能是采用部分部分容器化,逐步迁移到容器环境, 这时候我们就会面临一个问题: 外部服务如何调用k8s内部服务.

Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,consumer 通过 Eureka 发现其他节点/服务.
应用场景

Eureka , gateway , app01, app02 处于k8s集群外部
app03, app04 位于k8s内部

问题: k8s集群内部可以访问外部 eureka, gateway等服务, 但是外部服务无法访问k8s内部 app03,app04.

打通网络

打通外部环境与k8s环境service与pod网段,可以做的网络直连.使得外部服务可以直接访问k8s内网.

方案一 : k8s node 节点可以直接访问pod与service网段, 我们只需要将其中一个节点作为 Gateway , 其他外部机器添加静态路由网关执行这台 node 节点即可.

方案二: 将其他机器部署flannel插件, 打通pod与service网段.

PS 这里我们使用第一种方案.

PS阿里云环境下由于使用VPC , 这是我们只需要在VPC添加路由策略即可.

开启服务器路由转发

node 节点

vim /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
sysctl -p

外部服务器添加静态路由

10.0.0.0/16 pod 网段
10.10.0.0/16 service 网段
172.17.71.209 开启路由转发的node节点.

ip route add 10.0.0.0/16 via 172.17.71.208 dev eth0
ip route add 10.10.0.0/16 via 172.17.71.208 dev eth0

Eureka 注册问题

打通网络后, 我们启动服务, 我们发现虽然节点已经注册到Eureka, 但是使用的是hostname:port的格式, 而springclould中节点相互访问就是使用的Eureka中的注册信息, 这样也就意味着我k8s里的springclould节点注册的是pod 的 hostname (Eureka在k8s外部不需要打通网络也可以正常注册)

也就是外部服务虽然可以访问k8s内部网络, 但是这个hostname解析不成对于的IP, 也就是还是没有办法相互调用.
也就是说我们节点注册时而是使用pod IP注册就可以解决这个问题, 下边我们修改下k8s内部的springclould节点配置

vim BOOT-INF/classes/application-k8s.yml
# 配置服务注册中心的地址
eureka:
 client:
  serviceUrl:
   defaultZone: http://xx:xxx@sreg-smix3-k8s-t:7000/eureka/
 instance:
  preferIpAddress: true # 使用IP注册

重新打版, 重启pod.看起来和之前一样, 我们点击进去看下:

虽然显示是hostname, 但是注册地址以及改成了ip, 这时候其他非容器化节点去访问时就可以正常调通了.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java实现单链表中的增删改

    java实现单链表中的增删改

    这篇文章主要为大家详细介绍了java实现单链表中的增删改,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 浅谈springcloud常用依赖和配置

    浅谈springcloud常用依赖和配置

    鉴于很多小伙伴常问spring cloud常用依赖和配置,今天特地整理了本篇文章,文中有非常详细的代码示例,对正在学习的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 10分钟带你理解Java中的弱引用

    10分钟带你理解Java中的弱引用

    这篇文章将带大家快速理解Java中弱引用,文章介绍的很详细,对大家学习Java很有帮助哦,有需要的可以参考借鉴。
    2016-08-08
  • java 使用memcached以及spring 配置memcached完整实例代码

    java 使用memcached以及spring 配置memcached完整实例代码

    本篇文章主要介绍了java 使用memcached以及spring 配置memcached完整实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • Java9中新增的Collector收集器

    Java9中新增的Collector收集器

    这篇文章主要介绍了Java9中新增的Collector收集器,Collector作为收集器,简单来说就是将数据或元素收集到一起,并且flatMapping与收集器结合使用,通过提供智能元素集合进行分组。下文相关介绍需要的小伙伴可以参考一下
    2022-06-06
  • Java重载构造原理与用法详解

    Java重载构造原理与用法详解

    这篇文章主要介绍了Java重载构造原理与用法,结合实例形式分析了java可变参数、方法重载、构造器等相关概念、原理及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • 微信小程序获取手机号,后端JAVA解密流程代码

    微信小程序获取手机号,后端JAVA解密流程代码

    这篇文章主要介绍了微信小程序获取手机号,后端JAVA解密流程的代码,帮助大家更好的利用Java开发,感兴趣的朋友可以了解下
    2020-09-09
  • Spring AOP与代理类的执行顺序级别浅析

    Spring AOP与代理类的执行顺序级别浅析

    这篇文章主要介绍了Spring AOP与代理类的执行顺序级别,关于 Spring AOP和Aspectj的关系,两个都实现了切面编程,Spring AOP更多地是为了Spring框架本身服务的,而Aspectj具有更强大、更完善的切面功能
    2023-03-03
  • 使用Springboot+poi上传并处理百万级数据EXCEL

    使用Springboot+poi上传并处理百万级数据EXCEL

    这篇文章主要介绍了使用Springboot+poi上传并处理百万级数据EXCEL,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 详解SpringBoot开发使用@ImportResource注解影响拦截器

    详解SpringBoot开发使用@ImportResource注解影响拦截器

    这篇文章主要介绍了详解SpringBoot开发使用@ImportResource注解影响拦截器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11

最新评论