Я пытаюсь разобраться в 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, и я не могу найти ответы самостоятельно.