zoukankan      html  css  js  c++  java
  • 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

    作者:小家电维修

    相见有时,后会无期。

  • 相关阅读:
    链表数据-PHP的实现
    关于go的init函数
    socket小计
    很随笔
    go获取当前项目下所有依赖包
    关于synergy的问题
    二叉树的最大路径和
    大数求和
    重载<<运算符第二个参数必须加上const
    表达式求值
  • 原文地址:https://www.cnblogs.com/lizexiong/p/15358967.html
Copyright © 2011-2022 走看看