Kubernetes:无法从其他命名空间访问mongodb replicaset服务

Kubernetes:无法从其他命名空间访问mongodb replicaset服务,kubernetes,rancher,replicaset,Kubernetes,Rancher,Replicaset,如果我的问题措辞有问题,请告诉我,这样我下次可以做得更好,或者修改问题 我做了什么。 使用rancher使用Amazon EKS创建集群 在“默认”命名空间中部署了nodejs应用程序 使用默认设置从rancher应用程序目录安装MongoDB replicaset 服务/部署名称为mongodb replicaset 命名空间也是mongodb复制集 当我使用mongodb://mongodb-replicaset:27017/tradeit_system?replicaSet=rs作为连

如果我的问题措辞有问题,请告诉我,这样我下次可以做得更好,或者修改问题

我做了什么。

使用rancher使用Amazon EKS创建集群

在“默认”命名空间中部署了nodejs应用程序

使用默认设置从rancher应用程序目录安装MongoDB replicaset

  • 服务/部署名称为mongodb replicaset
  • 命名空间也是mongodb复制集
当我使用
mongodb://mongodb-replicaset:27017/tradeit_system?replicaSet=rs
作为连接字符串

我得到了错误

MongoNetworkError:无法在第一次连接时连接到服务器[mongodb replicaset-:27017][MongoNetworkError:getaddrinfo ENOTFOUND mongodb replicaset mongodb replicaset:27017]

然后我读到,要访问不同名称空间中的服务,还需要指定名称空间和服务名称

所以我做了这个
mongodb://mongodb-replicaset.mongodb-replicaset:27017/tradeit_system?replicaSet=rss
作为连接url,我得到了错误

MongoError:在replicaset中未找到主副本或副本集名称无效


因此,如果要访问名称空间并引用集群域,则必须在hoststring中包含名称空间,而您没有这样做

引自

此服务管理的域的形式为:$(服务名称)。$(命名空间).svc.cluster.local,其中“cluster.local”是群集域

因此,在您的情况下,您的pod DNS将写为:


mongodb replicaset.mongodb replicaset.svc.cluster.local

注意:在kubernetes的标记描述中,建议在[serverfault.se]或[superuser.se]中询问最后一个错误,这表明您已成功连接到mongodb,但数据库集群配置不正确。因此,您已经解决了“连接到另一个命名空间中的服务”问题。这仍然不起作用
mongodb://mongodb-replicaset.mongodb-replicaset.svc.cluster.local:27017/tradeit_system?replicaSet=rs
错误:MongoError:在replicaset中找不到主副本集或在一个地方发现无效的副本集名称您将replicaset设置为“rs”另一个是“rss”,默认为“rs0”,你知道它实际上是哪一个吗?谢谢。这就解决了!。默认复制集名称设置为rs0。