#docker #kubernetes #minikube
#docker #kubernetes #мини-куб
Вопрос:
Я использую minikube с hyperkit
драйвером, и мне нужно получить доступ к порту, открытому на хост-машине, из модуля внутри кластера minikube.
Есть 2 способа, которыми я могу это сделать:
Перенаправление портов
Перенаправление моего локального порта на minikube ip
:
ssh -i $(minikube ssh-key) docker@$(minikube ip) -R 8080:localhost:8080
И затем из модуля я могу curl 172.17.0.1:8080
источник: https://medium.com/tarkalabs/proxying-services-into-minikube-8355db0065fd
IP-адрес локальной машины
С моей хост-машины я получаю IP-адрес моста minikube: ifconfig bridge100
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 8e:85:90:2d:d5:64
inet 192.168.64.1 netmask 0xffffff00 broadcast 192.168.64.255
И затем из модуля я могу curl 192.168.64.1:8080
Однако я не уверен, что оба метода являются правильными. Есть ли способ статически ссылаться на хост-машину, чтобы иметь возможность доступа к открытым портам. Каково здесь решение?
Комментарии:
1. Проверьте сеть хоста на alesnosek.com/blog/2017/02/14 /… не рекомендуется этого делать, так как у вас будет только один модуль с этой сетью с открытым заданным портом, но это вариант.
Ответ №1:
Здесь задействовано слишком много уровней косвенности, и вам придется ввести IP-адрес физического хоста в контейнер в качестве переменной среды или параметра ConfigMap. Здесь также может работать служба типа ExternalName.
Существенная проблема здесь заключается в том, что каждый уровень может узнать о слое непосредственно за ним, но не дальше. У вас есть хост, на котором запущена виртуальная машина с модулем Kubernetes. Модуль может использовать нисходящий API для поиска IP-адреса своего узла, но в вашем случае это будет виртуальная машина, а не хост вокруг нее.
(В качестве параллельного вопроса: у вас обычный домашний маршрутизатор 192.168.1.1, а ваша локальная система 192.168.1.2. На маршрутизаторе запущен какой-либо сервер. Между тем, в вашей локальной системе запущена виртуальная машина, которая видит хост как 172.17.0.1 и считает, что это 172.17.0.2. Как виртуальная машина достигает службы на маршрутизаторе, если она не знает о сети 192.168.1.0 / 24 в своей локальной сетевой среде?)
Ответ №2:
Для других пользователей, которые также задаются этим вопросом, пытаясь заставить модуль, работающий в minikube, получить доступ к порту, работающему на хосте, пожалуйста, обратитесь к этой ссылке.
вкратце:
- Убедитесь, что служба на хосте привязана к
0.0.0.0
(всем IP-адресам). Если это только127.0.0.1
(localhost), это не сработает. - Модуль внутри minikube должен подключиться к хосту
host.minikube.internal
.