Внешняя ip-камера Kubernetes (Minikube) не работает

Я новичок в Kubernetes, и я просматривал поиск и чтение, почему мой внешний ip не разрешает.

Я запускаю мини-куб на дистрибутиве ubuntu 16.04.

В обзоре сервисов панели управления у меня есть этот

    my-nginx | run: my-nginx | 10.0.0.11 | my-nginx:80 TCP my-nginx:32431 | TCP 192.168.42.71:80 

Когда я делаю http, получаю http://192.168.42.165:32431/, я получаю страницу nginx.

Конфигурация службы выглядит следующим образом

    # Please edit the object below. Lines beginning with a '#' will be ignored,
    # and an empty file will abort the edit. If an error occurs         while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: 2016-09-23T12:11:13Z
      labels:
        run: my-nginx
      name: my-nginx
      namespace: default
      resourceVersion: "4220"
      selfLink: /api/v1/namespaces/default/services/my-nginx
      uid: d24b617b-8186-11e6-a25b-9ed0bca2797a
    spec:
      clusterIP: 10.0.0.11
      deprecatedPublicIPs:
      - 192.168.42.71
      externalIPs:
      - 192.168.42.71
      ports:
      - nodePort: 32431
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        run: my-nginx
      sessionAffinity: None
      type: LoadBalancer
    status:
      loadBalancer: {}

Это части моего ifconfog

    virbr0    Link encap:Ethernet  HWaddr fe:54:00:37:8f:41  
              inet addr:192.168.122.1  Bcast:192.168.122.255          Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:4895 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8804 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:303527 (303.5 KB)  TX bytes:12601315 (12.6         MB)

    virbr1    Link encap:Ethernet  HWaddr fe:54:00:9a:39:74  
              inet addr:192.168.42.1  Bcast:192.168.42.255          Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:7462 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12176 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3357881 (3.3 MB)  TX bytes:88555007 (88.5 MB)


    vnet0     Link encap:Ethernet  HWaddr fe:54:00:37:8f:41  
              inet6 addr: fe80::fc54:ff:fe37:8f41/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:4895 errors:0 dropped:0 overruns:0 frame:0
              TX packets:21173 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:372057 (372.0 KB)  TX bytes:13248977 (13.2 MB)

    vnet1     Link encap:Ethernet  HWaddr fe:54:00:9a:39:74  
              inet addr:192.168.23.1  Bcast:0.0.0.0          Mask:255.255.255.255
              inet6 addr: fe80::fc54:ff:fe9a:3974/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:7462 errors:0 dropped:0 overruns:0 frame:0
              TX packets:81072 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3462349 (3.4 MB)  TX bytes:92936270 (92.9 MB)

Есть ли у кого-нибудь указатели, потому что я потерялся?

Ответ 1

Миникуб известные проблемы объясняет, что балансировки балансировки нагрузки не поддерживаются.

Однако, как объясняется в этой проблеме, они обрабатываются так же, как и службы типа NodePort:

Пример

Запустите мини-кубок и запустите службу nginx

$ minikube start
$ kubectl run my-nginx --image=nginx --replicas=1 --port=80
$ kubectl expose deployment my-nginx --target-port=80 --type=LoadBalancer

Вы можете определить URL-адрес этой службы балансировки нагрузки одним из двух способов. Трудный путь:

$ echo http://$(minikube ip):$(kubectl get service my-nginx --output='jsonpath={.spec.ports[0].NodePort}')

или простой способ

$ minikube service my-nginx --url

Обновление - используйте входной контроллер

Я нашел публикацию блога, в которой описывается, как можно запускать контроллер доступа на минибаке, чтобы обеспечить возможность балансировки нагрузки.

Итак, запустите traefik входной контроллер:

$ kubectl create -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik.yaml

Как только это было выполнено, создайте Ingress следующим образом: маршрутизируйте трафик на основе имени хоста:

$ cat ingress.yml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: my-nginx-ingress
spec:
 rules:
  - host: my-nginx.192.168.99.100.xip.io
    http:
     paths:
      - path: /
        backend:
         serviceName: my-nginx
         servicePort: 80


$ kubectl create -f ingress.yml
ingress "my-nginx-ingress" created

Теперь служба nginx отображается по следующему URL-адресу:

http://my-nginx.192.168.99.100.xip.io/

Примечание:

  • Я использую службу xip.io вместо подстановочной записи DNS.

Ответ 2

Я предполагаю, что вы используете minikube в virtualbox (не было информации, как вы его запустите и какая у вас ОС).

Когда вы создаете сервис с типом = LoadBalancer, вы также должны запустить minikube tunnel, чтобы выставить LoadBalancers из кластера. Затем, когда вы запустите kubectl get svc, вы получите внешний IP-адрес LoadBalancer. Тем не менее это IP-адрес мини-куба, поэтому, если вы хотите выставить его извне с вашего компьютера, вы должны установить на него какой-нибудь обратный прокси или туннель.