ingress nginx遇到502錯誤,connect() failed (113 Host is unreachable) while connecting to upstream


1.背景

  之前碰到過ingress nginx遇到502錯誤,(113 No route to host) while connecting to upstream的問題,於是按照以上方式將ingress升級至1.30。

  但是今天發現,發布容器后,老的報錯沒有碰上,這里出現一個相同的代碼,但是不一樣的報錯提示。

  出現的場景是,因為業務需要測試更改時間,時間更改后在使用ntp同步回去,pod就無法訪問,出現connect() failed (113 Host is unreachable) while connecting to upstream報錯。

  升級至1.30之后。無法訪問的情況還存在,只是nignx的報錯日志內容有點小改變,但是網頁的報錯還是相同。

 

2.原因

  以下描述一下整個排錯的過程。

  1.這里首先查看最后端pod的IP為以下:172.16.0.98

  然后使用瀏覽器訪問網址,結果為502

  

  2.查看ingress日志的,發現ingress-nginx upstreamhost的IP為172.16.0.90,此IP為更新之前的pod IP。

  3.查看ingress-nginx的連接,發現也是向老的pod發起的請求。該pod都已經不存在了。

  到這里,問題定位到了,還是之前的bug,在更改pod時間后,然后將時間還原,然后發布版本后,老的pod消失,新的pod出現,ingress還是會將請求轉發至老的pod,導致出現以上錯誤,網頁返回502.

 

4.解決方式(臨時)

  上一篇案例中與騰訊雲聯調懷疑是ingress保存了已經不存在的pod連接,將請求轉發到已經刪除掉的pod上去,所以這次直接刪除ingress然后自動拉起一個問題臨時得到解決。

  至於最終解決辦法,還是沒有改變。在刪除ingress控制器之后,ingress-nginx控制器的日志正常。

  

后記:想過嘗試重置pod的網卡或者清空TCP緩存,但是由於是pod,無法做到這些操作,至於最終解決方案,目前正在調研中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM