Диаграмма руля nginx - вход в миникубе не работает? - PullRequest
0 голосов
/ 09 февраля 2020

Я настроил вход "Hello World" на Minikube, как описано в учебном пособии . Единственное отличие - я удалил указанное c имя хоста, чтобы использовать вместо него '*'. Однако кажется, что он работает только с входным контроллером, предоставленным Minikube (minikube addons enable ingress). Когда я пытаюсь отключить его и использовать вместо него helm install nginx-ingress stable/nginx-ingress, я больше не могу получить доступ к образцу веб-сайта Hello World. Вместо этого я получаю сообщение об ошибке «Отказано в соединении»:

$ kubectl get ingress
NAME              HOSTS   ADDRESS        PORTS   AGE
example-ingress   *       192.168.64.6   80      6m23s

$ minikube ip
192.168.64.6

$ curl -iv "192.168.64.6"
* Rebuilt URL to: 192.168.64.6/
* Hostname was NOT found in DNS cache
*   Trying 192.168.64.6...
* connect to 192.168.64.6 port 80 failed: Connection refused
* Failed to connect to 192.168.64.6 port 80: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 192.168.64.6 port 80: Connection refused

Если я переключаюсь обратно на встроенный аддон, он снова работает:

$ helm uninstall nginx-ingress
release "nginx-ingress" uninstalled

$ minikube addons enable ingress
✅  ingress was successfully enabled

$ curl -iv "192.168.64.6"
* Rebuilt URL to: 192.168.64.6/
* Hostname was NOT found in DNS cache
*   Trying 192.168.64.6...
* Connected to 192.168.64.6 (192.168.64.6) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.38.0
> Host: 192.168.64.6
> Accept: */*
> 
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
* Server openresty/1.15.8.2 is not blacklisted
< Server: openresty/1.15.8.2
Server: openresty/1.15.8.2
< Date: Sun, 09 Feb 2020 07:06:58 GMT
Date: Sun, 09 Feb 2020 07:06:58 GMT
< Content-Type: text/plain; charset=utf-8
Content-Type: text/plain; charset=utf-8
< Content-Length: 59
Content-Length: 59
< Connection: keep-alive
Connection: keep-alive

< 
Hello, world!
Version: 1.0.0
Hostname: web-9bbd7b488-wsvsw
* Connection #0 to host 192.168.64.6 left intact

Возможно ли установить правильно использовать эту схему руля на миникубе?

1 Ответ

0 голосов
/ 10 февраля 2020

Я отключил входной аддон и установил nginx вход с упомянутой вами картой руля. Я протестировал его и нашел решение для вас.

Когда вы запустите:

$ kubectl get services nginx-ingress-controller

, вы должны увидеть этот вывод:

NAME                       TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
nginx-ingress-controller   LoadBalancer   10.96.245.213   <pending>     80:30240/TCP,443:31224/TCP   50s

Обратите внимание, что EXTERNAL-IP в состоянии ожидания.

minikube не будет назначать этот IP сам по себе, вам нужно сделать это вручную.

Запустите kubectl edit svc nginx-ingress-controller и добавьте поле externalIPs в поле spec: следующим образом:

spec:
  externalIPs:
  - 192.168.39.241 # minikube ip

Теперь посмотрим, почему это работает. Обычно при запуске kubernetes в облаке environemnt при создании службы типа LoadBalancer облачный контроллер создает балансировщик нагрузки и обновляет IP-адрес службы, но поскольку вы запускаете его на мини-кубе, где не работает ни одно облако с указанными c функциями, вам нужно добавьте адрес вручную.

Это может быть любой IP-адрес любого интерфейса, связанного с вашим кластером, поэтому он также должен работать при наличии большего количества узлов. Вы можете добавить IP любого интерфейса ваших узлов, и kuberentes будет привязывать порт к этому интерфейсу, и с этого момента вы можете отправлять ему трафик c, и он будет перенаправлен на соответствующий сервис / модуль.

Позвольте мне знаю, это было полезно.

...