Размещение на миникубе локально

Я развернул и создал службы для socketcluster, scc-broker а также scc-state на kubernetes локально через minikube непосредственно с помощью docker-файлов (см. эту ссылку для .yaml файлы). И я также создал сервис для ingress в том же кластере с .yaml файл предоставлен по ссылке, которую я упомянул. Насколько я понимаю, по умолчанию эти сервисы ClusterIP тип.

Развертывание сервисов правильно работает на vm (minikube). Статус установлен на работу на приборной панели Kubernetes для

  • стручки

  • развертывание

Но проблема, с которой я сталкиваюсь, заключается в том, что нет общедоступных конечных точек, предоставляемых scc-state, scc-broker, сервером socketcluster. Поэтому в настоящее время я не могу понять, как я могу получить доступ к службам извне, то есть вне виртуальной машины (которая работает на мини-кубе).

Изображения были созданы непосредственно из yu-файлов kubernetes с отключенной входной защитой TLS.

Я упускаю какой-либо аспект относительно доступа к кластеру сокетов на хост-машине? Должен ли я указать тип службы для любого другого типа, кроме ClusterIP насколько я знаю, использование этого типа гарантирует, что сервис будет доступен только внутри кластера. Но опять же я сомневаюсь, что если я использую ingress, это должно помочь получить доступ к службам за пределами VM. Нужно ли иметь ingress controller отдельно такие как NGINX?

Любое руководство будет оценено.

Спасибо!

PS Следуя этому руководству по развертыванию.

2 ответа

Решение

Kubernetes не раскрывает ничего вне частной контейнерной сети, если вы специально не сообщите об этом. Распространенные способы сделать это

  • Использовать Service с type: LoadBalancer подключить публичный IP к облачному сервису. Это не доступно на миникубе
  • Использовать Service с type: NodePort выставить порт в общедоступной сети каждого узла. Это рекомендуемый способ сделать что-то на миникубе ( https://github.com/kubernetes/minikube)
  • Создайте свои стручки с hostNetwork: true пропустить контейнерную сеть и использовать хост-сеть (например, использовать тот же IP-адрес, что и сам узел). Как правило, это менее полезно, чем предыдущие два варианта, за исключением очень специфических обстоятельств.

Ingress ресурс не связан с внешним подключением. Если у вас развернут входной контроллер, он будет использовать Ingress ресурсы, которые вы создаете, чтобы настроить себя. Например, nginx-ingress-controller ( https://github.com/kubernetes/ingress/tree/master/controllers/nginx) по существу создаст server блок в конфигурации nginx для каждого Ingress, Тем не менее, сам входной контроллер все равно должен быть открыт для внешней сети с помощью Service с type: LoadBalancer или же type: NodePort,

Если вы следите за документацией к minikube, https://github.com/kubernetes/minikube, вам будет предложено создать Service с type: NodePort,

Тогда беги kubectl get services найти назначенный номер IP для вашего сервиса и использовать minikube ip найти IP адрес миникуба ВМ. Затем соедините их вместе и получите доступ к услуге с вашего ноутбука.

Другие вопросы по тегам