В чем разница между различными IP-адресами Minikube + Kubernetes? - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь разобраться в Kubernetes, чтобы я мог начать использовать его для локальной разработки, но здесь я спотыкаюсь о некоторых основах ...

Я работаю на ОС Ma c X и я установил Kubernetes, используя Homebrew через brew install kubernetes. После этого я запустил простое приложение (развертывание? Служба? - мне не совсем понятна терминология), например:

$> minikube start
$> kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.10
$> kubectl expose deployment hello-minikube --type=NodePort --port=8080

Я получил эти команды непосредственно из документации Kubernetes

Теперь на каждом этапе моего пути я пытался прочитать документы Kubernetes и немного поэкспериментировать с различными инструментами командной строки, чтобы я не просто слепо следил, но и фактически понимал, что происходит. на. И вот тут я столкнулся с первым огромным препятствием: слишком много IP-адресов!

$> ifconfig
...
        inet 192.168.2.126 netmask 0xffffff00 broadcast 192.168.2.255
...
$> minikube ip
192.168.64.3
$> kubectl describe pods
...
IP:          172.17.0.2
...
$> kubectl describe services
...
IP:                    10.96.8.59
...

Я понимаю пару из них:

  • 192.168.2.126 - это IP-адрес моего локального компьютера в сети, и это то, как другой компьютер в сети может получить доступ к моему компьютеру (если, например, я запускаю nginx или что-то еще)
  • 192.168.64.3 - это IP-адрес, назначенный виртуальной машине, на которой работает Minikube. Я знаю, что мой компьютер должен иметь доступ к этому IP-адресу напрямую, но я не знаю, как предоставить этот IP-адрес другим компьютерам в сети

Но у меня есть без понятия что случилось с 172.17.0.2 и 10.96.8.59 - что это за IP-адреса, когда мне нужно их использовать и как получить к ним доступ?

One далее вещь

Когда я пытаюсь получить доступ к xxx.xxx.xxx.xxx:8080 для любого из четырех IP-адресов в моем браузере, приложение echoserver, которое я запускаю не подходит. Хозяин просто тайм-аут. Однако, используя minikube service hello-minikube --url (за документы ), я получаю: http://192.168.64.3: 30866

Я могу понять, почему я получаю IP-адрес Minikube (как иначе будет ли мой компьютер обращаться к контейнеру, работающему внутри виртуальной машины, кроме как для непосредственного подключения к виртуальной машине и перенаправления порта виртуальной машины?) - но я не понимаю:

  • Откуда появился порт 30866
  • Как Minikube узнает о сервисе hello-minikube, поскольку он был создан с использованием kubectl, а не minikube

Также немного связан: я не знаю как kubectl знал, что нужно подключиться к виртуальной машине Minikube и отправить команды на сервер API Kubernetes на , который кластер. Я никогда не говорил kubectl, что у меня запущена виртуальная машина, и при этом я не говорил, как подключиться к этой виртуальной машине. Но каким-то образом просто знал .

Я знаю, что это как три разных вопроса (что означает каждый из IP-адресов, как Minikube выполняет переадресацию портов и как kubectl взаимодействует с Minikube) - но это все вопросы, которые возникли в результате выполнения первого шага урока Minikube, и я не могу найти ответы самостоятельно.

1 Ответ

2 голосов
/ 07 февраля 2020

ifconfig действительно помогает понять происхождение каждого IP-адреса, на который мы смотрим. Каждый из IP-адресов поступает из разных подсетей.

192.168.64.3 - это внутренний IP-адрес, который поступает из интерфейса сети нашей виртуальной машины.

172.17.0.2 - это внутренний IP-адрес, который поступает из сетевого интерфейса docker. Это позволяет изолировать сеть от хоста и контейнера, который мы запускаем.

10.96.8.59 - это внутренний IP-адрес, который поступает из собственного сетевого интерфейса виртуальных машин. Это можно подтвердить, введя s sh в VM (minikube ssh) и выполнив там команду ifconfig. Это распределение можно контролировать с помощью опции --service-cluster-ip-range, когда мы запускаем запуск мини-куба

, что происходит с 172.17.0.2 и 10.96.8.59 - что это за IP-адреса, когда мне нужно использовать их, и как я могу получить к ним доступ?

IP-адрес 10.96.8.59 может быть доступ только через другую виртуальную машину. Например, если вы подключите больше виртуальных машин к существующему кластеру мини-кубов, вы сможете получить доступ к 10.96.8.59 через другую виртуальную машину. Кроме того, IP-адреса в диапазоне 10.96.xx.xx будут использоваться для внутрипод-связи. тогда как 172.17.0.2 будет использоваться для связи между модулями.

Откуда появился порт 30866?

Это случайный выбор из диапазона портов, созданных мини-кубом для предоставления вашего сервиса вашей сети. По умолчанию диапазон портов, которым minikube предоставляет наши сервисы, составляет 30000-32767 Но если вы хотите манипулировать этим, пожалуйста, обратитесь к этому do c

, как kubectl знал подключиться к виртуальной машине Minikube

Если вы запустите мини-куб, мы увидим, что мини-куб пытается настроить виртуальную машину, а затем настроить kubectl для подключения к виртуальной машине. Чтобы этот kubectl знал, к какому хосту подключаться; Вся эта информация хранится в файле конфигурации, который находится по адресу ~/.kube/, здесь вы найдете комбинацию IP-адрес сервера:

...