如何在k8s集群中连接使用头盔图表创建的mongodb副本集

时间:2019-04-29 09:52:49

标签: kubernetes kubernetes-helm azure-kubernetes azure-aks mongodb-replica-set

我正在使用stable-mongodb-replicaset舵图在Azure上托管的k8s群集内创建mongodb。 mongodb具有三个副本。stable-mongodb-replicaset充当子图表。


我的发行名称是骨骼。 我可以看到我的mongodb copyset已启动并正在运行。我尝试了它的连接,它也可以正常工作。根据文档,我尝试使用服务客户端连接到此副本集,但会引发错误。

我用于连接的URL是

"mongodb://myuser:mydbpwd@skeleton-mongodb-replicaset-client:27001/skeleton?authSource=admin&replicaSet=rs0"

mongodb服务的输出

enter image description here

[1;30m2019-04-28 14:34:34,483 [0;39m => [34mINFO [0;39m [ [32mlocalhost-startStop-1 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Cluster created with settings {hosts=[skeleton-mongodb-replicaset-client:27001], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[1;30m2019-04-28 14:34:34,485 [0;39m => [34mINFO [0;39m [ [32mlocalhost-startStop-1 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Adding discovered server skeleton-mongodb-replicaset-client:27001 to client view of cluster
[1;30m2019-04-28 14:34:34,984 [0;39m => [34mINFO [0;39m [ [32mcluster-ClusterId{value='5cc5b9fab13658000122961a', description='null'}-skeleton-mongodb-replicaset-client:27001 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Exception in monitor thread while connecting to server skeleton-mongodb-replicaset-client:27001
com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.connection.netty.NettyStream$2.operationComplete(NettyStream.java:158)
        at com.mongodb.connection.netty.NettyStream$2.operationComplete(NettyStream.java:145)
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
        at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)

我们正在使用驱动程序org.mongodb:mongodb-driver-async 3.6.4版本,而我们正在使用的mongodb版本是4.0

1 个答案:

答案 0 :(得分:2)

无头服务用于控制网络域。 As each pod is created, it gets a matching DNS subdomain, taking the form: $(podname).$(governing service domain) 因此,要连接到副本集,我相信您需要使用: “ mongodb:// myuser:mydbpwd @ skeleton-mongodb-replicaset-0 .skeleton-mongodb-replicaset:27001, skeleton-mongodb-replicaset-1 .skeleton-mongodb -replicaset:27001, skeleton-mongodb-replicaset-2 。skeleton-mongodb-replicaset:27001 /?authSource = admin&replicaSet = rs0“

第二个@yanivoliver的问题-为什么使用非标准端口?