миникуб ip недоступен - PullRequest
1 голос
/ 16 марта 2020

Я создал один сервис под названием fleetman-webapp :

apiVersion: v1
kind: Service
metadata:
 name: fleetman-webapp

spec:
 selector:
  app: webapp

 ports:
  - name: http
    port: 80
    nodePort: 30080

 type: NodePort

также, модуль с именем webapp :

apiVersion: v1
kind: Pod
metadata:
 name: webapp
 labels:
  app: webapp
spec:
 containers:
 - name: webapp
   image: richardchesterwood/k8s-fleetman-webapp-angular:release0

Я проверил minikube ip :

192.168.99.102

Но когда я печатаю в браузере 192.168.99.102:30080, веб-приложение недоступно: enter image description here

Обратите внимание, что я использую последнюю версию Ubuntu. Более того, я проверил, активны ли прокси и брандмауэры:

cat / etc / environment :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

iptables -L :

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-USER  all  --  anywhere             anywhere            
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain DOCKER (1 references)
target     prot opt source               destination         

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination         
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere            

Chain DOCKER-USER (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere 

Я также отключил ufw в Ubuntu, но безуспешно, URL 192.168.99.102: 30080 .

Не могли бы вы помочь мне, пожалуйста ? заранее спасибо за ваш ответ.

1 Ответ

0 голосов
/ 17 марта 2020

Существует множество различных гипервизоров, которые могут работать с minikube. Выбор одного будет сильно зависеть от переменных, таких как операционная система. Вот некоторые из них:

  • Virtualbox
  • Hyper-V
  • VMware Fusion
  • KVM2
  • Hyperkit
  • "Docker (--vm-driver=none)" (см. Цитаты)

Официальная документация говорит об этом: Kubernetes.io: Minikube: Указание драйвера vm

Выбор Hypervisor повлияет на поведение minikube.

Фокусировка на:

  • Docker: --vm-driver=none
  • Виртуальная коробка: --vm-driver=virtualbox

Docker

Официальная документация подводит итог:

* 1045 Minikube также поддерживает опцию --vm-driver=none, которая запускает компоненты Kubernetes на хосте, а не на виртуальной машине. Для использования этого драйвера требуется Docker и среда Linux, но не гипервизор.

- Kubernetes.io: установить мини-куб: установить гипервизор

Вывод команды $ sudo minikube ip покажет IP-адрес хоста .

Тип объекта службы NodePort будет доступен с IP_ADDRESS_OF_HOST:NODEPORT_PORT.

После команды: $ kubectl get nodes -o wide:

NAME STATUS ROLES  AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
K8S  Ready  master 95s v1.17.3 192.168.0.114 <none>  Ubuntu 18.04.4 LTS 5.3.0-28-generic docker://19.3.8

Пожалуйста, укажите c посмотрите:

INTERNAL-IP
192.168.0.114

Это тот же IP-адрес в качестве хоста он работает на . Вы можете (например) curl pods без каких-либо ограничений. Пожалуйста, прочитайте статью во включенном виде со ссылкой:

Внимание: Драйвер виртуальной машины none может привести к проблемам безопасности и потери данных. Перед использованием --vm-driver=none обратитесь к этой документации для получения дополнительной информации.

Вы можете проверить, что было выставлено с помощью команды: $ sudo netstat -tulpn

Virtualbox

Создание экземпляра minikube с --vm-driver=virtualbox создаст виртуальную машину с Virtualbox в качестве хоста.

Виртуальная машина, созданная с таким типом --vm-driver, будет иметь 2 сетевых интерфейса, представленных ниже:

  • NAT
  • Адаптер только для хоста

Важно, чтобы ваш экземпляр мини-куба был доступен Адаптер только для хоста .

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

- Virtualbox.org: виртуальные сети

Например:

  • Адаптер только для хоста minikube будет иметь адрес: 192.168.99.103
  • Ваш адаптер только для хоста будет есть адрес: 192.168.99.1

Они должны быть разными!

Если у вас возникли проблемы с подключением к этому адаптеру, проверьте:

  • Если адрес адаптера только для хоста minikube отвечает на ping при minikube start успешно завершено.
  • Ваш адаптер только для хоста присутствует в конфигурации вашей сети, выдавая:
    • ip a
    • ifconfig
  • Ваш адрес адаптера только для хоста находится в диапазоне вашего экземпляра мини-куба (su bnet)

Из моего опыта перезагрузка / воссоздание этого адаптера работало все время, если что-то был не прав.

В выводе команды $ sudo minikube ip будет показан IP-адрес хост-адаптера .

Вслед за командой: $ kubectl get nodes -o wide:

NAME   STATUS   ROLES    AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE              KERNEL-VERSION   CONTAINER-RUNTIME
m01    Ready    master   29m   v1.17.3   192.168.99.103   <none>        Buildroot 2019.02.9   4.19.94          docker://19.3.6

Пожалуйста, обратите внимание c еще раз посмотрите на INTERNAL-IP и ip address, связанные с ним.

Тип объекта службы NodePort будет доступен с: IP_ADDRESS_OF_HOST_ONLY_ADAPTER:NODEPORT_PORT.

Я воссоздал ваши Deployment и Service, прикрепленные к нему, и это сработало в случаях --vm-driver=none и --vm-driver=virtualbox.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы в этой теме c.

...