Как подключиться с хоста к Pod в Minikube
Если проблема в том, что вы не можете получить доступ к своим Pod (через service
) на Minikube.
Давайте сначала проверим ваш Service
.
$ kubectl get service eureka
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
eureka LoadBalancer 10.104.196.32 <pending> 8080:30167/TCP 25m
Обратите внимание, что при запуске Minikube служба LoadBalancer
не получает внешний IP-адрес.
В местном масштабе Minikube не интегрируется с другим сервисом для запуска внешних балансировщиков нагрузки.
Но в большинстве других сред, когда вы используете Kubernetes LoadBalancer
, он обеспечит балансировщик нагрузки, внешний по отношению к вашему кластеру, например Elasti c Load Balancer (ELB) в AWS, или Облачный балансировщик нагрузки в GKE.
Поскольку Minikube не интегрируется с отдельным локальным балансировщиком нагрузки, вы должны попросить Minikube смоделировать соединение с использованием сервиса minikube:
$ minikube service eureka
Это предоставит вам IP-адрес Minikube и номер порта для маршрутов Minikube к «eureka», поэтому вы можете скопировать и вставить его в браузер / другое приложение для тестирования приложения.
Дополнительно информацию можно найти в документации Minikube :
Чтобы получить доступ к развертыванию hello-minikube, предоставьте его в качестве службы:
kubectl expose deployment hello-minikube --type=NodePort --port=8080
Получить URL-адрес открытой службы для просмотра сведений о службе:
служба minikube hello-minikube --url
РЕДАКТИРОВАТЬ
Как подключиться от Pod к localhost
на Minikube.Host
не возникает проблем с подключением с использованием следующего docker -compose.yaml с помощью 'network_mode: "host"'
Правда.
Если вы используете сетевой режим host
для контейнера, сетевой стек этого контейнера не изолирован от хоста Docker (контейнер совместно использует сетевое пространство имен хоста), и контейнер не получает своего собственного IP-адрес выделен. Поэтому, если вы запускаете контейнер, который привязывается к порту 80, и используете host
сеть, приложение контейнера доступно на порту 80 на IP-адресе хоста.
Поскольку minikube выполняет все из виртуальной машины , сетевое взаимодействие может стать довольно сложным
После запуска Minikube и создания его сети вы сможете посещать сервер localhost на 127.0.0.1
и 192.168.99.1
. (Если нет, последующие шаги не будут работать). В случае успеха это означает, что виртуальная машина Minikube может получить доступ к локальному хосту вашего хоста на 192.168.99.1
(127.0.0.1
из Minikube все равно будет localhost
)
1073 * для Minicube, поэтому в данном случае вместо
localhost
ваше приложение должно подключиться к
192.168.99.1
.
kind: Service
apiVersion: v1
metadata:
name: mongo
spec:
type: ExternalName
externalName: host.docker.internal
Пожалуйста, убедитесь, что host.docker.internal
разрешен в IP-адрес хост-машины.
Кроме того, вы можете отредактировать /etc/hosts
Minikube и добавить любое доменное имя для этого IP, чтобы вы могли подключиться к нему.
Надеюсь, это объясняет, как получить доступ к вашему приложению извне и получить доступ к "localhost
" при использовании Minikube.