EC2 / Kubernetes - Как получить доступ к кластерной службе колб через NodePort на EC2? - PullRequest
1 голос
/ 28 апреля 2019

Я создал кластер Kubernetes (1x Master / 2x Workers), на котором выполняется контейнерное веб-приложение Flask. Я создал развертывание / службу на главном узле, который предоставляет NodePort для доступа к приложению, работающему на рабочих под: 5000.

Пакеты приложений активны, а служба NodePort доступна. Однако из-за кластера, работающего на экземпляре AWS EC2 с его собственными IP-адресами, я не могу получить доступ к кластерному приложению через IP-адрес NodePort.

Я обдумываю самый простой способ получить доступ к кластерному приложению Flask через: 5000 через локальный браузер?

Предыстория:

  • Я много читал о Kubernetes Ingress и AWS ELB / ALB NGINX Ingress, чтобы обойти эту проблему, однако из-за того, что я пробовал, я не смог настроить эту маршрутизацию. Это кажется довольно сложным, и я не смог найти каких-либо легко понятных ресурсов для применения в моей ситуации.

  • Я подумал, что более простым решением может быть установка простого обратного прокси-сервера NGINX, который работает на моем главном узле, для преобразования трафика, поступающего через [ec2_public_ip]: 5000 в [nodeport-cluster-ip]: 5000 , Это только казалось, что зависло и время ожидания после 60 секунд однако.

Это мои настройки кластера:

NAME                               READY   STATUS    RESTARTS   AGE
pod/anagram-app-55996478f5-mdnlg   1/1     Running   0          13m
pod/anagram-app-55996478f5-qkn7p   1/1     Running   0          13m

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/anagram-app   NodePort    10.108.225.119   <none>        5000:30230/TCP   13m
service/kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP          14m

NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/anagram-app   2/2     2            2           13m

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/anagram-app-55996478f5   2         2         2       13m

kubectl logs anagram-app-55996478f5-mdnlg (чтобы показать приложение Flask активным):

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 212-934-957

Я просто ищу простой способ доступа к кластерному приложению через мой браузер через порт: 5000. Если кто-то испытывал радость от этого на AWS EC2, я открыт для идей:)

Заранее спасибо ..

1 Ответ

0 голосов
/ 28 апреля 2019

Вы должны иметь возможность связаться с вашим приложением NodePort через общедоступный IP-адрес EC2.Вам нужно только разрешить порты NodePort в группе безопасности экземпляров узлов.Чтобы разрешить все NodePorts, вам нужно разрешить диапазон портов 30000-32767 от 0.0.0.0/0.

Если вы хотите открыть только порт 5000 - тогда вам нужно добавить hostNetwork: true в вашу спецификацию развертывания следующим образом:

spec:
  hostNetwork: true

А также вам нужно разрешить порт 5000 в группе безопасности

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