天天看點

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

1.背景

  首先談一下背景環境,出現文章标題的出錯是公司的tke(騰訊雲k8s,當然問題和騰訊雲k8s叢集沒有關系),首先分為dev叢集環境和生産叢集環境,出現問題是在很早期建立的dev環境。

  問題報錯以下:

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

  注意:同時,後端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也正常了。

  

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

  該問題運作2個月後出現,出現機率較小,但是為了避免出現問題,還是推薦使用0.30以上版本的ingerss。

3.參考

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

作者:小家電維修

轉世燕還故榻,為你銜來二月的花。

繼續閱讀