kubernetes中集成istio出现拉取配置中心数据失败导致服务启动失败

由于在k8s使用了grpc,所以这里我们集成istio来实现http2的自动发现以及负载均衡,但是随着节点增加,istio之前同步配置时间边长导致第一次启动时,服务启动拉取配置时istio却还没初始化好相关配置,而导致第一次启动失败,错误如下
在这里插入图片描述
这里有几种方案

  • 让服务启动时先暂停5s,再加载配置信息
  • 加载配置失败一直重试知道成功
  • 修改istio与业务pod启动时间间隔
  • 修改dockerfile 检查istio是否启动,启动成功后再启动业务pod

经过评估,方案1需要代码侵入,还是无法完全解决问题,
方案2 也是需要修改业务代码,很多业务都得跟着修改,改动大
方案3 这个在最新版本中的k8s有这个功能,升级有风险
方案4 侵入式小
最后选择方案四,也参考了相关资料
https://github.com/istio/istio/issues/16222

最终需要修改dockerfile来解决,并且将检查istio健康状况改成了检查配置中心是否可用

ENTRYPOINT ["/bin/sh","-c"]
CMD ["until curl --head 'http://config-center/info' ; do echo Waiting for Sidecar; sleep 3 ; done ; echo Sidecar available; java -Xmx3200m -Xms3200m -Xmn1600m   -jar /app.jar --spring.profiles.active=prod "]

启动时打印信息如下
在这里插入图片描述
这里可以看到第一次检测也是失败,知道成功后才开始启动业务POD

当然也可以将相关命令写到deploy的yml中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值