Acessando o serviço de kubernetes usando o nome do host / endereço IP

1

Meu objetivo final é poder acessar serviços expostos do Kubernetes em execução no meu host de outro host.

Estou fazendo desenvolvimento no minikube e tentei usar um controlador Ingress. Eu consigo fazer isso funcionar no próprio dispositivo, conforme as instruções aqui Configurando o ingresso minikube . No entanto, quero poder acessar meus serviços expostos de um computador diferente, como em curl http://host.ip:8000 , em que host.ip é o endereço IP público real do dispositivo, não o da VM minikube ou de uma rede interna criada no dispositivo; e a porta 8000 é a do serviço Kubernetes exposto.

Isso não parece um caso tão estranho, então estou surpreso por não ter conseguido encontrar nenhuma informação útil sobre como **** EASILY **** faz isso.

Aqui está o meu controlador de ingresso local , por questões de integridade:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: nlp-adapt
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  backend:
    serviceName: default-http-backend
    servicePort: 8000
  rules:
  - host: myminikube.info
    http:
      paths:
      - path: /
        backend:
          serviceName: echoserver
          servicePort: 8080
  - host: test.nlp
    http:
      paths:
      - path: /nlptab
        backend:
          serviceName: nlptab 
          servicePort: 8000
    
por horcle_buzz 26.07.2018 / 19:58

1 resposta

1

Normalmente, o Minikube é executado dentro de uma máquina virtual. E é necessário expor a porta fora da máquina virtual para expor essa porta fora do Kubernetes para disponibilizar um aplicativo no IP do host.

Aqui está o exemplo:

  1. Expor Ingresso fora do Kubernetes:

    kind: Service
    apiVersion: v1
    metadata:
      name: ingress-nginx
    spec:
      type: NodePort
      selector:
        app: ingress-nginx
      ports:
        - port: 80
          nodePort: 31080
          name: http
    
  2. Exponha a porta 31080 fora da máquina virtual:

    ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip) -L 31080:0.0.0.0:8000
    

Depois disso, o aplicativo compartilhado pelo Ingress estará disponível em http://host.ip:8000

Não é a única maneira de expor um aplicativo. Por exemplo, ao usar o VirtualBox como um hipervisor, você também pode usar o recurso de encaminhamento de porta NAT do VirtualBox para permitir o acesso a serviços expostos através do NodePorts de fora. Como mencionado no link fornecido por @horcle_buzz

    
por 27.07.2018 / 13:08

Tags