Рейтинг:1

VMWare Workstation и Windows 10: не удается подключиться к серверу, размещенному на виртуальной машине

флаг cn

У меня есть частный кластер Kubernetes с двумя узлами, настроенный на VMWare Workstation 15. Я использую MetalLB и Calico. Служба входа и вход выглядят так:

xxx@c1-cp1:~/Desktop$ kubectl get svc -n ingress-controller-2
НАЗВАНИЕ ТИП КЛАСТЕР-IP ВНЕШНИЙ-IP ПОРТ(Ы) ВОЗРАСТ
wsnginx-ingress-nginx-controller LoadBalancer 10.109.117.222 192.168.44.136 80:30167/TCP, 443:30680/TCP 24 часа
wsnginx-ingress-nginx-controller-admission ClusterIP 10.105.103.165 <нет> 443/TCP 24 часа
xxx@c1-cp1:~/Desktop$ kubectl получает доступ к apollo
НАЗВАНИЕ КЛАСС ХОСТИ АДРЕС ПОРТЫ ВОЗРАСТ
аполло-вход wsnginx test.xxx.com 192.168.44.136 80 3h17m

Я использую сетевой адаптер Nat и статический IPS. У меня настроена переадресация портов следующим образом

введите описание изображения здесь

curl -D- http://192.168.44.136 -H 'Хост: test.xxx.com' из виртуальной машины, возвращает статус 200, но я не могу получить к нему доступ с хост-компьютера Win10 на 127.0.0.1:8080 как я получаю 404 NGINX не найден.

Не могли бы вы мне помочь? Что я делаю не так? Как еще я мог выставить его в своей частной сети? Спасибо!


ОБНОВИТЬ Я не уверен, что это правильный путь, но мне удалось подключиться с хост-компьютера, немного изменив ресурс Ingress. Я помещаю в комментарии параметр хоста, так как

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: аполлон-вход
спецификация:
  ingressClassName: wsnginx
  правила:
    #- хост: test.xxx.com
    - http:
        пути:
          - бэкэнд:
              оказание услуг:
                название: аполло-сервис
                порт: 
                  номер: 80
            дорожка: /
            тип пути: префикс

и теперь мой вход выглядит так

ПРОСТРАНСТВО ИМЕН НАЗВАНИЕ КЛАСС ХОСТИ АДРЕС ПОРТЫ ВОЗРАСТ
по умолчанию ingress.networking.k8s.io/apollo-ingress wsnginx * 192.168.44.136 80 3h31m

Кажется, теперь я могу получить к нему доступ и с моей хост-машины. У меня есть Rest API, поэтому я только что открыл его из браузера. http://127.0.0.1:8080

флаг in
Привет, Оана, добро пожаловать в S.F. Вы не включили фактическую тестовую команду для своего примера Win10, но для ясности: ресурсы Ingress полностью размещены на виртуальном хост-заголовке, что означает (так же, как вы сделали с вашим `curl`), вы _должны_ включать заголовок `host:`, поэтому входной контроллер знает, как направить ваш запрос. Удачи
Oana avatar
флаг cn
привет @mdaniel ! спасибо :) Ну, я просто пытался открыть его в браузере (так как есть REST API) --> 127.0.0.1:8080; но тем временем я заставил его работать, удалив значение хоста из входного манифеста. `правила: #- хост: test.xxx.com - http: пути: - бэкэнд: оказание услуг: название: аполло-сервис порт: номер: 80` Это нормально?
Рейтинг:1
флаг us

Это похоже на простую проблему отсутствия заголовка HTTP.

Во-первых, краткое объяснение:
Всякий раз, когда Хозяин указано в манифесте Ingress, будут приниматься только соединения с этого хоста. Эта информация извлечена из Хозяин HTTP-заголовок. Если вы не укажете Хозяин поле в манифесте Ingress, будут приниматься запросы из всех источников.

Вы отправили запрос правильно с первого раза

curl -D- http://192.168.44.136 -H 'Хост: test.xxx.com'

Но забыл сделать это во второй раз.
Эквивалент Powershell вышеизложенного:

Invoke-WebRequest -Uri http://127.0.0.1 -Headers @{"Host"="test.xxx.com"}

Все это легко и приятно, когда делается из командной строки, но отправить запрос из веб-браузера немного сложнее. Веб-браузеры не позволяют вам изменять запрос, чтобы включить надлежащие Хозяин заголовок по умолчанию. Однако такая функциональность может быть достигнута с помощью расширений:

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.