Kubernetes: невозможно получить доступ к службе репликации mongodb из другого пространства имен - PullRequest
0 голосов
/ 30 августа 2018

Если что-то не так с тем, как я сформулировал вопрос, пожалуйста, скажите, чтобы в следующий раз мне стало лучше или отредактируйте вопрос.

Что я сделал.

Используйте ранчо для создания кластера с Amazon EKS.

Развертывание приложения nodejs в пространстве имен по умолчанию.

Установлен репликационный набор MongoDB из каталога приложений ранчера с настройками по умолчанию.

  • Имя службы / развертывания: mongodb-replicaset
  • Пространство имен также является mongodb-replicaset

Когда я использую mongodb://mongodb-replicaset:27017/tradeit_system?replicaSet=rs в качестве строки подключения.

Я получаю ошибку.

MongoNetworkError: не удалось подключиться к серверу [mongodb-replicaset-: 27017] при первом подключении [MongoNetworkError: getaddrinfo ENOTFOUND mongodb-replicaset mongodb-replicaset: 27017]

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

Так что я сделал это mongodb://mongodb-replicaset.mongodb-replicaset:27017/tradeit_system?replicaSet=rss в качестве URL-адреса соединения, я получаю сообщение об ошибке.

MongoError: первичная копия не найдена в наборе реплик или недопустимое имя набора реплик

1 Ответ

0 голосов
/ 30 августа 2018

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

Цитировать этот документ

Домен, управляемый этой службой, имеет вид: $ (имя службы). $ (Пространство имен) .svc.cluster.local, где «cluster.local» - это кластерный домен.

поэтому в вашем случае ваш pod DNS будет записан как:

mongodb-replicaset.mongodb-replicaset.svc.cluster.local

...