Istio 报错503,upstream connect error or disconnect/reset before headers. reset reason: connect
最新推荐文章于 2024-07-19 16:49:24 发布
最新推荐文章于 2024-07-19 16:49:24 发布
阅读量
3w
错误描述:
每一次在升级微服务时(更新微服务版本),会有一段时间访问报 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/
2020/06/09 08:50:16 [error] 6608#0: *1 connect() to
unix:/tmp/php-cgi-73.sock failed (111: Connection refused) while
connecting to upstream, client: 192.168.8.133, server: 192.168.8.145,
request: “GET / HTTP/1.1”, upstream:
“fastcgi://unix:/tmp/php-cgi-73.
这个问题的原因是 SSL 证书验证失败,可能是证书过期、证书不受信任、证书链不完整等原因导致的。确认是否所有的证书都已正确设置,包括根证书、中间证书和服务器证书。如果还是无法解决问题,可以联系证书颁发机构或服务器管理员寻求帮助。命令查看详细的 TLS 握手过程,以确定具体的错误原因。如果以上步骤都没有解决问题,可以尝试使用。确认证书是否被信任,可以使用。确认证书链是否完整,可以使用。确认证书是否过期,可以使用。命令查看证书的过期日期。
upstream connect error or disconnect/reset before headers. reset reason: connection termination错误
最后删除相关pod重启才成功
upstream connect error or disconnect/reset before headers. reset reason: connection failure
通过istio访问容器内服务:
https://test-practice.xiaohoucode.com/api/practice/platform/project/X1
upstream connect error or disconnect/reset before headers. reset reason:
错误(虚拟机重启后常见问题):
upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: TLS error: 268436501:SSL routines:OPENSSL_internal:SSLV3_ALERT_CERTIFICATE_EXPIRED
解决办法:
istio-system 下的pod出问题了,需要kubectl
不要单单看envoy的日志,其实感觉看envoy的日志,对于这种问题,感觉没啥卵用,直接去查一下,相关的envoy节点所关联的consul节点日志。其实这个问题是因为consul connect 我采用的是vault,刚好昨天vault服务所在的服务器重启了,vault又没有配置自启,为啥又到了今天才报异常?consul和envoy在国内的文档除了非常简单的,稍微深入一点的都没有,vault比它们更偏门,Google都不好使。立刻把vault删了,把ca的配置改成用consul的,重启consul,完事。
- upstream connect error or disconnect/reset before headers. reset reason: connection termination
- grpc-status 14
- http 503
按照官方文档跑 bookinfo 例子,访问 productpage 的时候提示: upstream connect error or disconnect/reset before header
通过命令查看 productpage 的 istio proxy 的日志,日志都是 info 级别,通过调整 level 可以查看到更多 Envoy 的详细日志,打开方式可以通过 port-forwar...