net :: ERR_CONNECTION_TIMED_OUT从k8s中的angular到nodejs

时间:2017-09-16 22:55:15

标签: angularjs node.js kubernetes

我正在尝试向容器化的AngularJS前端向nodejs发出nodejs后端的请求。

两者都使用Kubernetes(KOPS)部署在AWS中。我创建了访问两者的服务。

前端类型是k8s服务中的LoadBalancer,后端是其ClusterIP。我可以使用负载均衡器的URL访问浏览器的前端,其中" kubectl获取服务"给我。但是当前端尝试向后端发出请求时,我会收到以下错误:

net::ERR_CONNECTION_TIMED_OUT or net::ERR_NAME_NOT_RESOLVED. 

我使用telnet等检查,应用程序正在运行,可以访问。直接访问主机名有效,但不能从AngularJS / NodeJS工作。

3 个答案:

答案 0 :(得分:0)

您的帖子对细节很清楚,但如果我理解正确的话:

1. ELB -> Service -> Pod("http-server-serving-Angular")
2. ClusterIP -> Service -> Pod("nodejs")

这是对的吗?因为如果是这样的话:

  

和后端,它的ClusterIP

群集IP地址,正如其名称所示,仅在群集中可用。您还希望后端服务属于LoadBalancer类型,因此不在群集中的流量可以到达nodejs应用程序。

我只是稍微欺骗了你的答案,因为你绝对可以配置一个Ingress控制器,然后将其他服务留作ClusterIP,但我敢打赌,这不是典型的设置。 / p>

答案 1 :(得分:0)

我想我发现了这个问题。这是可能的原因。我正在使用express.js作为在nodejs中托管的前端。我们编写了与后端主机连接的服务。这不是通过http服务器提供的,而是通过客户端的浏览器建立连接。我尝试将公共IP添加到后端,它按预期工作。所以可以修复它从nodejs web服务器发送express / angular。 这不是kubernetes的问题。我为添加误导性标签而道歉。

感谢所有回复人员!

答案 2 :(得分:0)

所以这个问题在nginx控制器中是错误的规则。我的入口有拼写错误导致前端无法识别网址。此问题已得到解决。