首页 > 解决方案 > k8s 应用程序容器中的出站请求中的连接被拒绝错误。伊斯蒂奥?

问题描述

更新

我有一些脚本可以初始化我们的服务。由于脚本中的第一个出站请求(到外部服务)中的连接被拒绝
错误, 该脚本在容器中运行时失败。 我们尝试添加一个使 curl 循环的循环,如果失败,请重试,否则 - 继续执行脚本。 有时第一次成功,有时连续失败10-15次。 我们最近开始使用 istio 可能是什么原因?



标签: kubernetesistiokubernetes-pod

解决方案


这是一个著名的 istio 错误https://github.com/istio/istio/issues/11130(在 Istio 的 sidecar 完全运行之前,App 容器无法连接到网络)似乎 Istio 代理不会并行启动,它正在等待让应用容器准备就绪。一位博主提到的顺序启动序列(https://medium.com/@marko.luksa/delaying-application-start-until-sidecar-is-ready-2ec2d21a7b74)引用:most Kubernetes users assume that after a pod’s init containers have finished, the pod’s regular containers are started in parallel. It turns out that’s not the case.

容器将按照部署规范 YAML 定义的顺序启动。所以最大的问题是 Istio 代理特使是否会在第一个容器卡在 curl-loop 时启动。(鸡蛋和鸡肉问题)。应用程序容器脚本执行:

until curl --head localhost:15000 ; do echo "Waiting for Istio Proxy to start" ; sleep 3 ; done

据我所见:该脚本无济于事。代理已启动,但与外部主机名的连接返回“连接被拒绝”


推荐阅读