Как получить доступ к службе с другого компьютера, отключающего rancher-server?

#docker #networking #rancher

#docker #сеть #rancher

Вопрос:

Я пытаюсь создать сервер docker с использованием rancher в локальной сети (на многих компьютерах, на некоторых Linux, на некоторых Windows). Я установил rancher-server, создал хост, добавил API для тестирования и создал балансировщик нагрузки для регистрации этого API. Локально работает нормально, я могу получить доступ к контейнеру API следующим образом: «http://test.172.17.0.4.xip.io:3000 /«, но на других компьютерах в моей сети я не могу получить доступ..

PS:
test -> Имя API
172.17.0.4 -> IP-адрес docker ХОСТ-машины (с помощью rancher-agent)
xip.io -> общедоступный DNS с подстановочными знаками (подробнее см. в :http://xip.io / )
3000 -> Порт API, отображенный в балансировщике нагрузки

Я пытался изменить сеть контейнера в пользовательском интерфейсе rancher, не сработало, я прочитал кое-что о создании сети docker, но я немного смущен, потому что docker создает netdocker по умолчанию, docker0, это мостовая сеть.. Я немного разбираюсь в сетевых вопросах.

РЕДАКТИРОВАТЬ:
я создал macvlan, используя сеть docker, и теперь я могу выполнить пинг к своему контейнеру, используя другие компьютеры, но теперь у моего контейнера нет подключения к Интернету для загрузки вещей.

docker network create -d macvlan --subnet=172.16.108.0/26 --gateway=172.16.108.1 -o macvlan_mode=bridge -o parent=enp1s0 rancher

и попытался запустить контейнер в этой сети

EDIT2:
Этот ifconfig вывод

docker0: flags = 4099 mtu 1500 inet 172.17.0.1 маска сети 255.255.0.0 широковещательная передача 172.17.255.255 эфир 02:42:79:4f: fc: 66 txqueuelen 0 (Ethernet) RX пакеты 0 байт 0 (0.0 B) Ошибки RX 0 отброшены 0 переполнения 0 кадра 0 Пакеты TX 0 байт 0 (0.0 B) Ошибки TX 0 отброшены 0 переполнения 0 носитель 0 столкновений 0

enp1s0: flags=4163 mtu 1500 inet 172.16.108.1 маска сети 255.255.255.192 широковещательная передача 172.16.108.63 inet6 fe80::593f: 24d0:31f2:4fd8 prefixlen 64 scopeid 0x20 ether d0: 94:66:a5:29:8f txqueuelen 1000 (Ethernet) RX пакеты 1251 байт 1024069 (1000,0 Кб) Ошибки RX 0 отброшено 5 переполнений 0 кадр 0 Пакеты TX 980 байт 157904 (154,2 Кб) Ошибки TX 0 отброшено 0 переполнений 0 несущая 0 столкновения 0

lo: flags = 73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Loopback Local) RX пакеты 0 байт 0 (0.0 B) RX ошибки 0 отброшены 0 переполнения 0 фрейма 0 Пакеты TX 0 байт 0 (0.0 B) Ошибки TX 0 отброшены 0 переполнения 0 несущей 0 столкновения 0

ПРАВКА 3:
Я попытался указать ip-адрес, передавая флаг —address при запуске rancher и / или хоста, и результат тот же: unknown flag: --address команды, которые я пытался выполнить, являются:

docker run -d --restart=unless-stopped --address 172.16.108.63 -p 8080:8080 rancher/server

Чтобы запустить rancher server. Я тоже пробовал с macvlan

docker run --privileged --name some-docker1 --address 172.16.108.63 -d docker:stable-dind

Чтобы запустить rancher machine (который будет будущим хостом)
, я попробовал ту же команду, что и выше, но без —address . Затем, подключенный в оболочке контейнера, я попытался создать хост

docker run -e CATTLE_AGENT_IP="172.17.0.3" --rm --privileged --address 172.16.108.63 -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher ran
cher/agent:v1.2.11 http://172.17.0.2:8080/v1/scripts/3FA0E7B767770264BCAD:1546214400000:P9NfsauqyhZpoeIBgGyCZIHkKtE

Результаты те же..

РЕЗЮМЕ: Я пытаюсь создать rancher-server в своей локальной сети для доступа к приложениям в моем балансировщике нагрузки с других компьютеров в той же сети.

Комментарии:

1. Вам необходимо использовать общедоступный IP-адрес хоста (или частный IP-адрес, доступный в сети).

2. Хорошо, и вы можете рассказать мне, как я это делаю?

3. Я не знаю, каков IP-адрес вашего хостинга. Вы можете попробовать ip addr of ifconfig , если используете хост Linux, и проверить наличие IP-адреса сетевого интерфейса. Что-то вроде eth0 или ens1 и т.д.

4. Обычно, когда вы получаете URL-адрес xip, он должен содержать IP-адрес хоста. Не уверен, что происходит в вашей настройке.

5. Используете ли вы сервер Rancher и агент Rancher на одном хосте?

Ответ №1:

Правка 2: Необходимо указать IP-адрес добавляемого хоста с помощью CATTLE_AGENT_IP. В предыдущей правке я неверно указал версии.

Редактировать 1:

При использовании одного и того же хоста для запуска как сервера rancher, так и образа агента важно указать IP-адрес хоста с помощью флага --address <IP address> . В противном случае автоматически определяемый IP-адрес был бы неверным.

В вашем случае вам нужно указать --address 172.16.108.63 при регистрации хост.

Тогда сгенерированный xip-адрес будет отражать правильный IP-адрес.

====

Вот один из способов получить доступ к вашему приложению извне кластера. Это предполагает использование Ingress. (Проверьте здесь для получения дополнительной информации:https://kubernetes.io/docs/concepts/services-networking/ingress /)

Шаг 1: Создайте развертывание (измените образ и настройте другие параметры в соответствии с вашими потребностями)

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
spec:
  replicas: 1
  selector:
    matchLabels:
      name: app1
  template:
    metadata:
      labels:
        name: app1
    spec:
      containers:
      - name: app1
        image: leodotcloud/swiss-army-knife
        ports:
        - containerPort: 80
          name: http
        env:
        - name: NATO_ALPHABET
          value: "a"
  

Шаг 2: Создайте сервис (можно напрямую создать вход, но мне нравится разделять вещи)

 apiVersion: v1
kind: Service
metadata:
  labels:
    name: access-app1
  name: access-app1
spec:
  ports:
    - port: 80
      targetPort: 80
  selector:
    name: app1
  

Шаг 3: Создайте вход

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-app1
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /app1
        backend:
          serviceName: access-app1
          servicePort: 80
  

Теперь ваше приложение будет доступно на http://<HOST_IP_ADDRESS>/app1

Комментарии:

1. Я думаю, вы неправильно поняли мою проблему, я отредактировал EDIT и EDIT2 , можете ли вы прочитать их снова? =)

2. Прежде всего, спасибо за помощь на данный момент. Я написал EDIT3, чтобы показать результаты вашего предложения, я также написал РЕЗЮМЕ, чтобы попытаться сохранить наше внимание =)

3. Вы упомянули xip.io черт возьми, я думал, вы используете версию Rancher 2.x. Посмотрев на вашу команду запуска docker, я понял, что вы используете версию 1.6.x. --address не для версии 1.6.x. Вам нужно использовать CATTLE_AGENT_IP=172.16.108.63 для версии 1.6.x.

4. Хорошо, теперь я могу получить доступ к своему приложению на моем ранчо с других компьютеров, используя 172.16.108.2.xip.io:<порт приложения>. я принимаю ваш ответ, но позвольте мне задать еще один быстрый вопрос, иногда меняется мой ip (172.16.108.2), какой самый простой способ это исправить?

5. Возможно, вам придется создать скрипт, который отслеживает ваш IP-адрес каждые несколько секунд / минут, и как только будет обнаружено изменение, повторно разверните контейнер агента. Но URL-адрес входа может не измениться (я сам не пробовал этот сценарий). TBH, это действительно не обычный вариант использования 🙂 … вы не можете запросить статический IP для своего компьютера?