2017-02-16 11 views
0

При запуске Minikube я хочу подключиться к серверу, у которого есть досадная привычка объявлять себя в реестр служб с его внутренним IP-адресом изнутри своего модуля.Маршрутизация внутреннего IP-адреса Kubernetes к главной системе

Однако по причинам, связанным с прошлым, я должен сначала подключиться к этому реестру и извлечь из него IP-адрес этого сервера. Единственный способ получить доступ к этому серверу с моего компьютера-разработчика, кажется мне, является мостом для внутренней сети, поэтому я могу получить доступ к сети Minikube. Есть простой способ сделать это?

ответ

3

Если я правильно понимаю: вы пытаетесь открыть сервер из мини-канала в свою хост-сеть. Это можно сделать несколькими способами:

Первый заключается в создании NodePort Service для вашего сервера/контейнера. Вы можете запустить minikube service list, чтобы получить URL для службы:

$ minikube service list 
|-------------|----------------------|-----------------------------| 
| NAMESPACE |   NAME   |    URL    | 
|-------------|----------------------|-----------------------------| 
| default  | kubernetes   | No node port    | 
| default  | <your-service>  | http://192.168.99.100:<port>| 
| kube-system | kube-dns    | No node port    | 
| kube-system | kubernetes-dashboard | http://192.168.99.100:30000 | 
|-------------|----------------------|-----------------------------| 

Второй заключается в использовании kubectl proxy и прокси-порт, который вы хотите локальной машине. Этот метод не требует создания службы, он должен работать с вашей текущей конфигурацией.

kubectl proxy --port=<port-you-want-access-on-server> 

Это будет сделать проксируемый порт доступного на локальном хосте: порт

Если вы просто пытаетесь получить IP-адрес стручка, эта команда должна работать (от How to know a Pod's own IP address from a container in the Pod?):

kubectl get pod $POD_NAME --template={{.status.podIP}} 

Кроме того, если вам просто нужно получить доступ к внутренней сети minikube в вы можете использовать:

minikube ssh 

Который будет высадить вас на виртуальную машину minikube в

3

Вы можете добавить маршрут к K8 внутренней сети с локального

Добавить маршрут к внутренней сети, используя адрес minikube IP-

$ sudo ip route add 172.17.0.0/16 via $(minikube ip) # linux 
$ sudo route -n add 172.17.0.0/16 $(minikube ip) # OSX 

вашей маски подсети можно найти с помощью команды kubectl get service

Проверьте маршрут, развернув тестовый контейнер и подключитесь к нему с localhost

$ kubectl run monolith --image=kelseyhightower/monolith:1.0.0 --port=80 
$ IP=$(kubectl get pod -l run=monolith -o jsonpath='{.items[0].status.podIP }') 
$ curl http://$IP 
{"message":"Hello"} 

Вы также можете добавить маршрут K8 мастера

sudo route -n add 10.0.0.0/24 $(minikube ip) 

Это полезно только для местного развития, вы должны использовать NodePort или LoadBalancer для экспонирования стручков в производстве.

+0

Это больше не работает с мини-баком 0,24, потому что маска подсети наложенной сети кубернетов изменилась - '10.0.0.0/8' Я думаю. – Peter

+0

Это '10.96.0.0/12' см. [Constant.go] (https://github.com/kubernetes/minikube/blob/master/pkg/util/constants.go) – Peter