在Kubernetes中访问同一集群内的后端时出现错误502

时间:2018-06-27 18:14:37

标签: nginx deployment kubernetes

后端:python(Django) 前端:angular6

我刚刚将后端和前端部署在Google Kubernetes中的同一集群上。它们是同一群集中的两个单独的服务。群集上的豆荚如下所示:

NAME                               READY     STATUS    RESTARTS   AGE
backend-f4f5df588-nbc9p     1/1       Running   0          1h
frontend-85885799d9-92z5f   1/1       Running   0          1h

该服务如下:

NAME              TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
backend    LoadBalancer   10.3.249.148   35.232.61.116    8000:32291/TCP   26m
frontend   LoadBalancer   10.3.248.72    35.224.112.111   8081:31444/TCP   3m
kubernetes        ClusterIP      10.3.240.1     <none>           443/TCP          1h

我的后端仅在django服务器上工作,从使用python manage.py runserver命令开始,一切正常。我构建了前端并部署在Nginx服务器上。因此,有两个Docker映像,一个用于django,一个用于nginx,作为集群中的两个Pod。

然后它们两个都有两个入口。暴露80个前端端口和8000个后端端口。保持负载平衡器nginx控制器。分配域后,我可以访问https://abc/project作为前端。但是,当我要发出API请求时,会出现ERR 502。 nginx中的错误消息是:

38590 connect() failed (111: Connection refused) while connecting to upstream, client: 163.185.148.245, server: _, request: "GET /project/api HTTP/1.1", upstream: "http://10.0.0.30:8000/dataproject/api", host: "abc" 

上游错误消息是后端服务的正确IP,但仍然出现502错误。我可以从Nginx服务器卷曲到前端。但是无法治愈后端。有什么帮助吗? PS。部署前一切正常。

1 个答案:

答案 0 :(得分:0)

已修复。 Django runserver cmd使用0.0.0.0,因此不会阻止外部连接:

python runserver 0.0.0.0:8000