Istio 報錯503,upstream connect error or disconnect/reset before headers. reset reason: connect

錯誤描述:
每一次在升級微服務時(更新微服務版本),會有一段時間訪問報 503 。並在 istio-proxy 日誌中有記錄:”upstream connect error or disconnect/reset before headers. reset reason: connection failure“

原因:
Kubernetes 檢測 Pod 準備好(Running 狀態)是 Pod 中的一個容器準備好就可以了。但是部署了 Istio 後,Pod 最先準備好的是 istio-proxy 容器。此時真正的微服務容器還沒有被啓動,流量就進入了 Pod,istio-proxy 接受到流量,並發現 upstream 微服務沒有啓動,所以 istio-proxy 會返回 503 。

解決辦法:
知道原因後,思路就很簡單了,只要在 Pod 中所有容器都啓動完成後,再告知 Kubernetes Pod 準備好了就可以了。對 Pod 中其他容器加上 readinessProbe(就緒探針)就可以讓 Kubernetes 確認容器準備就緒後再進行流量轉發。如在 Pod 模板中添加

livenessProbe:
      httpGet:
        path: /healthz
        port: 80
        httpHeaders:
      initialDelaySeconds: 10
      periodSeconds: 3

readinessProbe 參考:https://k8smeetup.github.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章