Kubernetes соединяются с атласом MongoDB, ошибка при разборе uri: lookup на 10.96.0.10:53: такого хоста нет - PullRequest
0 голосов
/ 17 марта 2020

Я использую MongoDB atlas в качестве службы базы данных, и у меня нет проблем с подключением к нему на простом локальном хосте или использованием в качестве docker образа. Однако, когда я пытаюсь развернуть его в kubernetes, я продолжаю сталкиваться со следующей проблемой:

error parsing uri: lookup _mongodb._tcp.xxxxdb-tryqz.azure.mongodb.net on 10.96.0.10:53: no such host

После некоторых исследований я знаю, что есть еще некоторые настройки (например, dnsPolicy при настройке модуля, Сервис expose с ExternalName type ... et c) необходим для подключения к внешнему dns / ip. Тем не менее, у меня все еще остается та же проблема после другой пробной версии.

Пробная версия 1: dnsPolicy

Я добавил dnsPolicy в свой файл deploy.yaml, но все еще не работает.

deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-api-deployment
  labels:
    app: my-api
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-api
  template:
    metadata:
      labels:
        app: my-api
    spec:
      containers:
        - name: my-api
          image: xxx/my-api:v4
          ports:
            - containerPort: 2322
          env:
            - name: MONGODB_USERNAME
              value: userb
            - name: MONGODB_PASSWORD
              value: abc12345
            - name: MONGODB_HOST
              value: xxxxdb-tryqz.azure.mongodb.net
      dnsPolicy: Default

Пробная версия 2: Использование службы

service-deploy.yaml

kind: Service
apiVersion: v1
metadata:
  name: mongodns
spec:
  type: ExternalName
  externalName: xxxxdb-tryqz.azure.mongodb.net

deploy.yaml (То же, что и выше, но со следующими изменениями)

  - name: MONGODB_HOST
          value: mongodns

При использовании метода пробной версии 2 ошибка изменилась соответственно:

error parsing uri: lookup _mongodb._tcp.mongodns on 10.96.0.10:53: no such host

Еще одна неожиданная вещь - когда я применяю service-deploy.yaml, служба продолжает загружаться в панель мониторинга minikube.

enter image description here

Вот мой GoLang Сценарий:

    dbHost      :=  os.Getenv("MONGODB_HOST")
    dbUserName  :=  os.Getenv("MONGODB_USERNAME")
    dbPassword  :=  os.Getenv("MONGODB_PASSWORD")

    ctx, _ := context.WithTimeout(context.Background(), 30*time.Second)
    mongoURI    :=  fmt.Sprintf("mongodb+srv://%s:%s@%s/test?retryWrites=true&w=majority", dbUserName, dbPassword, dbHost)
    clientOptions   :=  options.Client().ApplyURI(mongoURI)
    client, err := mongo.Connect(ctx, clientOptions)
    if err != nil {
        log.Println("NOT Connected to MongoDB!! (1)")
        log.Fatal(err)
    }
...