Размещение на миникубе локально
Я развернул и создал службы для 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 адрес миникуба ВМ. Затем соедините их вместе и получите доступ к услуге с вашего ноутбука.