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 ...
错误描述:
每一次在升级微服务时(更新微服务版本),会有一段时间访问报 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/
更多推荐
所有评论(0)