#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 Я обновил сообщение, включив скриншот конфигурации сопоставления портов.