Контейнер Rancher захватывает IP-адрес хоста

#docker #networking #kubernetes #rancher

#docker #сеть #kubernetes #владелец ранчо

Вопрос:

У меня есть 2 IP-адреса на моем хосте rancher (centos): 1.1.1.1 и 2.2.2.2

1.1.1.1 это IP-адрес, который я хочу использовать для доступа к пользовательскому интерфейсу rancher и SSH к хосту.

Я хочу использовать 2.2.2.2 для доступа к контейнерам для приложения. У меня есть 2 контейнера, один nginx и один ssh. Я настроил контейнеры на использование hostport, 80 сопоставленного с 2.2.2.2:80 и 22 с hostport 2.2.2.2:22 .

Я также изменил команду запуска по умолчанию для контейнера rancher, чтобы прослушивать порт 80 и 443 IP 1.1.1.1

Если я захожу в свой браузер и получаю доступ, 1.1.1.1 я вижу rancher, как и ожидалось, и если я получаю доступ, 2.2.2.2 я вижу свое контейнерное приложение, как и ожидалось.

Однако, если я попытаюсь получить доступ, 1.1.1.1:22 я в конечном итоге подключаюсь к контейнеру ssh, который должен только прослушиваться 2.2.2.2:22 .

Я что-то здесь упускаю? Это проблема конфигурации на хосте или контейнере? Может ли контейнер получить доступ к чему-то, о чем он даже не должен знать?

Обновить

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

Rancher запущен на хосте с 2 IP-адресами. Когда я запускаю rancher, я выполняю следующую команду, поэтому он привязывается к первому IP-адресу:

 docker run -d --volumes-from rancher-data --restart=unless-stopped -p 1.1.1.1:80:80 -p 1.1.1.1:443:443 rancher/rancher
docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.7 --server https://rancher1.my.tld --token [token] --ca-checksum [checksum] --etcd --controlplane --worker
  

У меня есть 4 контейнера, настроенных в пользовательском интерфейсе rancher, на которые я хочу указывать 2.2.2.2:22 и 2.2.2.2:80 , 2.2.2.2:2222 и 2.2.2.2:8080

Это две среды для приложения. 22 и 80 — это контейнеры nginx и ssh для оперативной среды (разделяющие объем данных между собой), и то же самое для 2222 и 8080 , причем они предназначены для среды контроля качества. Я использую ssh-контейнер для загрузки содержимого в контейнер nginx через общий том данных.

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

ОБНОВЛЕНИЕ 2

Вот скриншот настроек сопоставления портов в контейнере:https://snag.gy/idTjoV.jpg

Порт контейнера 22 сопоставлен с IP 2.2.2.2:222

Если я установлю это значение в 2.2.2.2:22 , SSH для хоста перестанет работать, и вместо этого будут установлены ssh-соединения с контейнером.

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

1. Пожалуйста, поделитесь своими командами запуска docker. Также не могли бы вы, пожалуйста, подробнее рассказать о том, что вы пытаетесь сделать с SSH внутри контейнера? Я чувствую, что что-то не так с SSH внутри контейнера.

2. @leodotcloud обновил вопрос с дополнительной информацией

3. При запуске вашего контейнера из пользовательского интерфейса вы выбрали hostPort, а также указали IP-адрес?

4. @leodotcloud Я обновил сообщение, включив скриншот конфигурации сопоставления портов.