Как получить доступ к сервису с другой машины без ранчо-сервера?

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

ПС:
test -> Имя API
172.17.0.4 -> Ip докера машины HOST (с агентом-ранчером)
xip.io -> общедоступный DNS с подстановочными знаками (подробнее см.: http://xip.io/)
3000 -> Порт API отображается в балансировщике нагрузки

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

Обновлено:
Я создал macvlan, используя сеть докеров, и теперь я могу пинговать свой контейнер с помощью других машин, но теперь у моего контейнера нет подключения к Интернету для загрузки вещей.

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

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

РЕДАКТИРОВАТЬ2:
Этот ifconfig вывод

докер0: флаги = 4099 mtu 1500 инет 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 Б) Ошибки RX 0 отброшено 0 переполнение 0 кадр 0 Пакеты TX 0 байт 0 (0,0 Б) Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

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

вот: флаги=73 mtu 65536 инет 127.0.0.1 сетевая маска 255.0.0.0 inet6 :: 1 prefixlen 128 scopeid 0x10 петля txqueuelen 1000 (локальная петля) Пакеты RX 0 байт 0 (0,0 Б) Ошибки RX 0 отброшено 0 переполнение 0 кадр 0 Пакеты TX 0 байт 0 (0,0 Б) Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0

РЕДАКТИРОВАТЬ3:
Я попытался указать IP-адрес, передав флаг --address при запуске ранчера и/или хоста, и результат тот же: unknown flag: --address команды, которые я пытался выполнить, следующие:

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

Для запуска сервера ранчера. Я тоже пробовал с macvlan

docker run --privileged --name some-docker1 --address 172.16.108.63 -d docker:stable-dind
Запустить ранчерскую машину (быть будущим хозяином)
И я попробовал ту же команду выше, но без --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

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

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

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

leodotcloud 09.04.2019 20:46

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

Matheus 09.04.2019 20:49

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

leodotcloud 09.04.2019 22:55

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

leodotcloud 09.04.2019 23:13

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

leodotcloud 10.04.2019 19:00

Да, я создаю контейнер с сервером ранчера, а затем контейнер с агентом ранчера.

Matheus 11.04.2019 02:35

Пожалуйста, проверьте отредактированный ответ и дайте мне знать, если он работает.

leodotcloud 11.04.2019 06:15
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
7
899
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

При использовании одного и того же хоста для запуска сервера ранчера и образа агента важно указать 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

Я думаю, вы неправильно поняли мою проблему, я отредактировал EDIT и EDIT2, вы можете прочитать их еще раз? знак равно

Matheus 10.04.2019 14:52

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

Matheus 11.04.2019 20:01

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

leodotcloud 12.04.2019 03:45

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

Matheus 12.04.2019 20:15

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

leodotcloud 13.04.2019 00:35

Я попробую это сделать, спс на время =)

Matheus 13.04.2019 23:15

Другие вопросы по теме