Ошибка 502 при доступе к бэкенду внутри того же кластера в Kubernetes - PullRequest
0 голосов
/ 27 июня 2018

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. Все отлично работает перед развертыванием.

1 Ответ

0 голосов
/ 29 июня 2018

Fixed. Django runserver cmd использует 0.0.0.0, поэтому он не будет препятствовать подключению извне:

python runserver 0.0.0.0:8000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...