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