Backend: питон (Джанго)
Внешний интерфейс: 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.
Тогда есть два входа для них обоих. Предоставление 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. Все отлично работает перед развертыванием.