kubernetes - 如何连接在 k8s 集群中使用 helm 图表创建的 mongodb 副本集
问题描述
我正在使用 stable-mongodb-replicaset helm chart 在 Azure 上托管的 k8s 集群中创建 mongodb。mongodb 有三个副本。stable-mongodb-replicaset 充当子图表。
我的发布名称是骨架。我可以看到我的 mongodb 副本集已启动并正在运行。我尝试了它的连接,它也可以正常工作。根据文档,我尝试使用服务客户端连接到此副本集,但它会引发错误。
我用于连接的 URL 是
"mongodb://myuser:mydbpwd@skeleton-mongodb-replicaset-client:27001/skeleton?authSource=admin&replicaSet=rs0"
mongodb服务的输出
[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
解决方案
无头服务用于控制网络域。 在创建每个 pod 时,它会获得一个匹配的 DNS 子域,格式为:$(podname).$(governing service domain) 因此,要连接到副本集,我相信您需要使用:“mongodb://myuser:mydbpwd@骨架-mongodb-replicaset-0 .skeleton-mongodb-replicaset:27001,骨架-mongodb-replicaset-1 .skeleton-mongodb-replicaset:27001,骨架-mongodb-replicaset-2 .skeleton-mongodb-replicaset:27001/?authSource =admin&replicaSet=rs0"
第二个@yanivoliver 的问题——为什么是非标准端口?
推荐阅读
- perl - LWP::Simple 6.53 安装失败
- caching - Hazelcast IMDG 中批量访问与单次访问的性能
- node.js - Multer GridFs 存储关联 req.user 到元数据
- ubuntu - 身份验证 localhost 失败,尽管有 ssh-keys
- boost - Boost Geometry:段相交尚未实现?
- python - 使用 OpenCV 在视频流中搜索对象
- r - 将 CSV 转换为 JSON 参数
- android - 机器学习套件文本识别读取错误的机读区问题
- kubernetes - 通配符匹配 Kubernetes 入口中的“路径”和“服务名称”
- java - 将输入流从 AWS S3 响应重定向到 Http Servlet 响应