Как получить просматриваемый URL-адрес из Docker-для-Mac или Docker-для-Windows? - PullRequest
0 голосов
/ 14 мая 2018

В миникубе я могу получить URL сервиса через minikube service kubedemo-service --url. Как получить URL-адрес для type: LoadBalancer службы в Docker для Mac или Docker для Windows в режиме Kubernetes?

service.yml:

apiVersion: v1
kind: Service
metadata:
  name: kubedemo-service
spec:
  type: LoadBalancer
  selector:
    app: kubedemo
  ports:
  - port: 80
    targetPort: 80

Когда я переключаюсь на type: NodePort и запускаю kubectl describe svc/kubedemo-service я вижу:

...
Type:                     NodePort
LoadBalancer Ingress:     localhost
...
NodePort:                 <unset>  31838/TCP
...

и я могу перейти к http://localhost:31838/, чтобы увидеть содержимое. Переключаясь на type: LoadBalancer, я вижу входные линии локального хоста в kubectl describe svc/kubedemo-service, но я получаю ERR_CONNECTION_REFUSED, просматривая его.

(Я знаком с http://localhost:8080/api/v1/namespaces/kube-system/services/kubedemo-service/proxy/, хотя это меняет корневой каталог сайта, нарушая ссылки на css и js, которые предполагают наличие корневого каталога. Я также знаком с kubectl port-forward pods/pod-name, хотя он подключается только к pods до k8s 1.10.)

Как перейти к услуге type: LoadBalancer в Docker для Win или Docker для Mac?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

LoadBalancer будет работать на Docker-для-Mac и Docker-для-Windows, пока вы используете последнюю сборку. Переверните тип обратно на LoadBalancer и обновите. При проверке выходных данных команды описания ищите строку Port: <unset> 80/TCP. И попробуйте нажать http://localhost:80.

0 голосов
/ 14 мая 2018

Как перейти к типу: служба ClusterIP или типу: служба LoadBalancer в Docker для Win или Docker для Mac?

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

  • A ClusterIP - это служба Kubernetes по умолчанию.Он предоставляет вам службу внутри вашего кластера, которую могут получить другие приложения внутри вашего кластера. нет внешнего доступа .Чтобы получить доступ к нему за пределами кластера, вам потребуется запустить прокси-сервер kube (например, в стандартном примере панели мониторинга).

  • A Служба LoadBalancer - это стандартный способ предоставления доступасервис в интернет.Доступ к балансировщику нагрузки и его настройка зависят от поставщика облачных услуг.

  • A NodePort - это самый примитивный способ получения внешнего трафика непосредственно к вашему сервису.NodePort, как следует из названия, открывает определенный порт на всех узлах (виртуальных машинах), и любой трафик, отправляемый на этот порт, перенаправляется в службу.

При этом сказано:Единственный способ получить доступ к вашему сервису в ClusteIP - из одного контейнера из кластера или с помощью прокси-сервера, а для LoadBalancer вам нужен облачный провайдер.Вы также можете имитировать LoadBalancer с помощью своего собственного входа (прокси-сервер восходящего направления, такой как nginx, расположенный напротив типа сервиса ClusterIP).

Полезная ссылка с более подробным объяснением и красивыми изображениями: https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0

Обновлено для LoadBalancer обсуждение:

Что касается использования LoadBalancer, вот полезная ссылка из документации (https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/):

Флаг --type = LoadBalancer указываетчто вы хотите предоставить свою Службу вне кластера.

  • В облачных провайдерах, которые поддерживают балансировщики нагрузки , для доступа к Службе будет предоставлен внешний IP-адрес.
  • В Minikube тип LoadBalancer делает Сервис доступным через команду сервиса Minikube.

    minikube service name-of-the-service
    

    Это автоматически открывает окно браузера с использованием локального IP-адреса, которыйобслуживает ваше приложение через сервисный порт.

...