ingress nginx遇到502错误,(113 No route to host) while connecting to upstream


1.背景

  首先谈一下背景环境,出现文章标题的出错是公司的tke(腾讯云k8s,当然问题和腾讯云k8s集群没有关系),首先分为dev集群环境和生产集群环境,出现问题是在很早期创建的dev环境。

  问题报错以下:

  注意同时,后端upstream-host IP并不是svc的IP或者pod的IP。是一个不存在的IP。这是第二个问题。

  可以看到请求已经到了ingress,但是就是无法访问后端服务。

  检查了k8s的yaml配置,以及在测试pod中访问目标服务pod也可以访问,删除重新创建也是no route to host。

 

2.问题解决

  一筹莫展之际,想到有2套环境,于是再次发布至另一套环境,果然,另一套prod环境是正常的。于是想到两个环境只有ingress的版本不同。于是去查询。 Dev的环境为0.23,而prod环境是0.30。

  同时拉上腾讯的支持人员去分析,后面认为是0.23版本的bug,可能是长连接等问题,导致,即使pod不在了,连接依旧保持,并将请求转发至老的POD ip上(即使POD已经不存在),由于ingress镜像没有看tcp连接的命令,于是果断删除了ingress,然后自动拉起,问题果然解决,并且,ingress日志中的upstream-host ip也正常了。

  

  该问题运行2个月后出现,出现概率较小,但是为了避免出现问题,还是推荐使用0.30以上版本的ingerss。

 

3.参考

  https://github.com/kubernetes/ingress-nginx/issues/5715


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM