Миникуб — доступ к портам хост-машины

#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, получить доступ к порту, работающему на хосте, пожалуйста, обратитесь к этой ссылке.

вкратце:

  1. Убедитесь, что служба на хосте привязана к 0.0.0.0 (всем IP-адресам). Если это только 127.0.0.1 (localhost), это не сработает.
  2. Модуль внутри minikube должен подключиться к хосту host.minikube.internal .