Spring Cloud Config+k8s节点漂移带来的问题

spring cloud版本为<version>Edgware.SR3</version> ,并且部署了spring-boot-admin-server

相关服务每隔20秒左右会出现:

2019-04-18 09:26:56.919  INFO [zbcloud-server-gateway,330af47ba126aca5,330af47ba126aca5,false] 1 --- [nio-8763-exec-4] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://172.20.4.51:8762/
2019-04-18 09:26:59.926  WARN [zbcloud-server-gateway,330af47ba126aca5,330af47ba126aca5,false] 1 --- [nio-8763-exec-4] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://172.20.4.51:8762/zbcloud-server-gateway/default": Host is unreachable (Host unreachable); nested exception is java.net.NoRouteToHostException: Host is unreachable (Host unreachable)

经查询时由于spring-boot-admin-server触发了健康检查,而Spring-Cloud-Config-server由于重启等原因pod的IP发生了变更,真正去访问的地址是直接从 properties.getRawUri()获取的,它已经是一个固化的值,而不是通过服务发现机制来动态获取的,从而导致无法请求配置中心。

解决方案:

  • 部署在机器上而不是容器上,避免IP的变动

  • 可以考虑关闭微服务队config客户端的健康检查,增加参数 health.config.enabled=false;但是这个操作有一个弊端,虽然迁移不会引发服务时好时坏的问题了,但是如果有动态配置刷新需求,如果迁移了配置中心,刷新配置操作也是会失败的。

转载于:https://my.oschina.net/u/1241604/blog/3038503

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jenkins是一款开源的持续集成工具,它可以帮助开发团队自动化地构建、测试和部署软件项目。在Jenkins中配置Docker插件后,我们可以结合Docker技术来进行自动化部署。Docker是一种轻量级的容器化技术,它可以将应用程序和其依赖的环境打包成一个可移植的容器,方便在不同的环境中部署和运行。 而Kubernetes(简称K8s)是一个开源的容器编排平台,它可以管理和调度Docker容器集群。通过在K8s中创建Pod、Service等资源对象,我们可以实现Spring Cloud项目的自动化部署。 首先,我们可以使用Jenkins的Pipeline功能来编写自动化部署的流水线脚本。流水线脚本可以定义一系列的步骤,包括构建、测试和部署等。在流水线脚本中,我们可以使用Docker插件来创建Docker镜像,并将其推送到Docker仓库。接着,我们可以使用K8s插件来在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。 在自动化部署过程中,我们可以将Spring Cloud项目的源代码与Dockerfile放在一个Git仓库中,并通过Jenkins的Webhook功能来触发自动化部署流水线。当有新的代码提交时,Jenkins会自动拉取最新的代码,并执行流水线脚本。在流水线脚本中,我们可以使用Maven或Gradle等工具来构建和打包Spring Cloud项目。然后,通过Docker插件创建可运行的Docker镜像,并将其推送到Docker仓库。 最后,使用K8s插件在Kubernetes集群中创建相关的资源对象,如Deployment和Service等。通过创建Deployment对象,我们可以定义应用程序的副本数和容器的镜像。通过创建Service对象,我们可以定义应用程序可以访问的网络端口和负载均衡规则。 通过Jenkins、Docker和Kubernetes的自动化部署,我们可以实现Spring Cloud项目的快速、可靠和可重复部署。这种自动化部署的方式可以提高开发效率和部署质量,同时也降低了运维成本和风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值