Входной шлюз Istio на рабочем столе wsl2 docker

Я пытаюсь запустить пример bookinfo на моем локальном компьютере с помощью wsl2 и docker desk. У меня возникли проблемы при попытке получить доступ к службе страницы продукта через шлюз, поскольку мне было отказано в соединении. Я не уверен, что я что-то пропустил. Вот что я сделал после того, как много гуглил в Интернете

  1. Развернутые все сервисы из примера bookinfo и все запущено, я могу скрутить страницу продукта из другого сервиса с помощью kubectl exec
  2. Развернут bookinfo-gateway с использованием файла из примера без каких-либо изменений в пространстве имен по умолчанию.
Name:         bookinfo-gateway
Namespace:    default
Labels:       <none>
Annotations:  <none>
API Version:  networking.istio.io/v1beta1
Kind:         Gateway
Metadata:
  Creation Timestamp:  2021-06-06T20:47:18Z
  Generation:          1
  Managed Fields:
    API Version:  networking.istio.io/v1alpha3
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:kubectl.kubernetes.io/last-applied-configuration:
      f:spec:
        .:
        f:selector:
          .:
          f:istio:
        f:servers:
    Manager:         kubectl-client-side-apply
    Operation:       Update
    Time:            2021-06-06T20:47:18Z
  Resource Version:  2053564
  Self Link:         /apis/networking.istio.io/v1beta1/namespaces/default/gateways/bookinfo-gateway
  UID:               aa390a1d-2e34-4599-a1ec-50ad7aa9bdc6
Spec:
  Selector:
    Istio:  ingressgateway
  Servers:
    Hosts:
      *
    Port:
      Name:      http
      Number:    80
      Protocol:  HTTP
Events:          <none>
  1. Istio-ingressgateway может открываться извне через localhost (не знаю, как это можно настроить, поскольку он развертывается во время установки istio) на 80, который, как я понимаю, будет использоваться bookinfo-gateway kubectl get svc istio-ingressgateway -n istio -система  введите описание изображения здесь

  2. следуя разделу «Определение входящего IP-адреса и портов» в инструкции.

Мой INGRESS_HOST = 127.0.0.1 и INGRESS_PORT - 80

  1. curl -v -s http://127.0.0.1:80/productpage | grep -o. *
*   Trying 127.0.0.1:80...
* TCP_NODELAY set
* connect to 127.0.0.1 port 80 failed: Connection refused
* Failed to connect to 127.0.0.1 port 80: Connection refused
* Closing connection 0
  1. попробовав этот http://127.0.0.1/productpage в браузере, верните 404. Означает ли это 404, что шлюз вроде вверх, но виртуальный сервис не работает ??

  2. дальнейший вопрос, если он актуален. Я немного запутался, как сейчас работает wsl2. Похоже, что localhost в браузере Windows и терминал wsl2 - это не одно и то же, хотя я знаю, что есть своего рода пересылка из Windows на сервер wsl2 (который я могу получить его IP из /etc/resolv.conf). если это то же самое, почему одно обратное соединение отклонено, а другое возвращает 404

  3. В Windows я попытался отключить IIS или что-либо, работающее на порту 80 (net stop http). Почему-то я все еще что-то вижу, слушает порт 80

netstat -aon | findstr :80
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       4


tasklist /svc /FI "PID eq 4"

Image Name                     PID Services
========================= ======== ============================================
System                           4 N/A

Интересно, это ли является причиной разницы в пункте 7? Как Windows работает на другом http-сервере на 80-м порту?

Я знаю, что мне задают много вопросов. Я считаю, что у многих из нас, плохо знакомых с istio и wsl2, могут возникнуть похожие вопросы. Надеюсь, это поможет и другим. Пожалуйста, порекомендуйте.


person user1619397    schedule 07.06.2021    source источник


Ответы (1)


Кажется, есть проблема с самим WSL2, вероятно, связанная с Локальные сайты, работающие в WSL2, недоступны в браузере # 5298.

Вы можете обойти это, выполнив

ip addr show

в вашем дистрибутиве WSL и заменив _2 _ / _ 3_ на eth0 адрес. В моем случае это 172.21.29.254, поэтому URL-адрес - http://172.21.29.254/productpage

Этот обходной путь сработал для меня.

person Paweł Grondal    schedule 08.06.2021
comment
Благодарю. как было предложено inet 172.18.98.178/28 brd 172.18.98.191 scope global eth0 Вместо отказа в соединении я получил это вместо curl 172.18.98.191/ productpage * Попытка 172.18.98.191:80 ... * TCP_NODELAY set * Немедленный сбой подключения для 172.18.98.191: Сеть недоступна * Закрытие подключения 0 curl: (7) Не удалось подключиться к серверу - person user1619397; 09.06.2021
comment
Попробуйте 172.18.98.178 - person Paweł Grondal; 09.06.2021
comment
172.18.98.178 обратное соединение отклонено - person user1619397; 09.06.2021
comment
Я пропустил один шаг в своем ответе, который может быть важным: я выключил WSL с помощью wsl --shutdown, а затем перезапустил его через Docker Desktop. Это один из способов решения проблемы с GitHub, о которой я упоминал. Кроме того, если возможно, добавьте C:\Windows\System32\wsl.exe в брандмауэр Защитника Windows. - person Paweł Grondal; 09.06.2021
comment
@ user1619397, это помогло решить вашу проблему? - person Paweł Grondal; 17.06.2021