• 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

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    工作流调度器Azkaban的安装配置
    MySQL初学入门基础知识-sql语句
    spark大数据生态架构
    快速排序算法——分析及总结 (非常好)
    经典的大数据面试题总结
    flume采集数据报错问题解决
    haproxy官方文档
    问题
    2016/6/7学习记录
    2016
  • 原文地址:https://www.cnblogs.com/lizexiong/p/15358967.html
Copyright © 2020-2023  润新知