Como expor e acessar as portas do MongoDb no Kubernetes?

1

Eu tenho o mongoDB implantado no Kubernetes. O banco de dados é configurado corretamente e pode ser acessado usando seu nome de DNS interno.

Eu preciso expor isso para o mundo exterior. Eu usei o nó porta / loadbalancer para expor a porta 27017, mas não consigo me conectar à porta usando IP: port. Não enfrentou um problema com aplicativos da Web usando IP: Port, não sei como fazer isso para um banco de dados.

Se você tentou usar o navegador, o link me fornece a seguinte mensagem de erro: Parece que você está tentando acessar o MongoDB por HTTP na porta do driver nativo.

Estou usando o robomongo para conectar-me ao banco de dados.Usando o RoboMongo, configurando o Endereço para o IP Público do Kubernetes e a Porta para o NodePort, recebo o seguinte erro - Não é possível conectar-se ao Kubernetes_Public_IP: NodePort

Precisa de ajuda para expor a porta e conectar-se a ela usando qualquer tipo de agente (robomongo não é necessário).

    
por jdoe 11.06.2018 / 11:53

1 resposta

1

No Kubernetes, se você quiser expor uma porta para o mundo externo, poderá usar o serviço com o tipo NodePort ou LoadBalancer.

O Type LoadBalancer é normalmente usado em provedores de nuvem, já que eles fornecem balanceadores de carga externos para o Kubernetes.

Portanto, no seu caso, o NodePort é a maneira mais fácil de expor a porta. Aqui está um exemplo de serviço YAML:

kind: Service
apiVersion: v1
metadata:
  name: mongodb-service
spec:
  type: NodePort
  selector:
    app: mongodb
  ports:
    - port: 27017
      nodePort: 32463 
      name: MongoPort

Na linha port: 27017 , especificamos sua porta do MongoDB, ela também é geralmente especificada em Deployment for MongoDB.

Na linha nodePort: 32463 , especificamos a porta externa. Lá, qualquer porta do intervalo 30000-32767 pode ser postada. Ou pode ser ignorado durante a criação, nesse caso, o Kubernetes atribui o número da porta automaticamente, e você pode encontrá-lo usando os comandos kubectl describe service mongodb-service ou kubectl get service mongodb-service -o yaml .

Depois disso, você pode usar qualquer cliente, por exemplo RoboMongo, para chegar até você MongoDB. Você precisa usar o endereço IP de qualquer nó e a porta da linha nodePort , não da linha port .

Por exemplo, se você tiver um cluster com três nós com endereços IP externos 12.13.14.151, 12.13.14.152, 12.13.14.153, poderá usar qualquer um dos 12.13.14.151:32463 , 12.13.14.152:32463 , 12.13.14.153:32463 em sua conexão RoboMongo configurações.

Para mais informações sobre Serviços, você pode verificar o seguinte link:

Serviços de publicação - tipos de serviços

    
por 12.06.2018 / 13:06