gpt4 book ai didi

mongodb - 使用 mongodb+srv 连接到部署为有状态集的 mongodb

转载 作者:行者123 更新时间:2023-12-02 14:32:47 47 4
gpt4 key购买 nike

我已经在 kubernetes 中部署了一个 3 pod mongodb statefulset,并且我正在尝试使用新的 mongodb+srv 连接字符串 (mongodb 3.6) 连接到具有 SRV 记录的 headless k8s 服务集群成员。

但是,连接失败,如下所示(mongo 命令正在 satefulset 中的第一个 pod 上执行):

root@mongodb-0:/# mongo "mongodb+srv://mongodb-headless.mongo.svc.cluster.local"
FailedToParse: Hostname mongodb-0.mongodb-headless.mongo.svc.cluster.local. is not within the domain mongo.svc.cluster.local
try 'mongo --help' for more information

这是 headless 服务配置:

kubectl describe svc/mongodb-headless -n mongo
Name: mongodb-headless
Namespace: mongo
Labels: app=mongodb-headless
chart=mongodb-1.0.1
heritage=Tiller
release=mongo
Annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints=true
Selector: app=mongodb,release=mongo
Type: ClusterIP
IP: None
Port: mongodb 27017/TCP
TargetPort: 27017/TCP
Endpoints:
192.168.16.8:27017,192.168.208.3:27017,192.168.64.9:27017
Session Affinity: None
Events: <none>

mongodb 集群正常运行,我可以通过本地主机或使用单独的(非 headless )服务连接到成员(例如 mongo "mongodb://mongodb.mongo.svc.cluster.local").

我是否在 mongodb+srv 要求/实现中遗漏了某些内容,或者我是否需要在 k8s 部署中调整某些内容?

最佳答案

mongodb+srv:// 的连接 use SSL/TLS by default 。您需要通过添加 tls=falsessl=false 手动禁用它们。

以下连接 URI 适用于 GKE 上的 MongoDB 4.2 三成员副本集。

mongo "mongodb+srv://svc-headless.my-namespace.cluster.local/?tls=false&ssl=false"

添加replicaSet查询选项可能有助于连接到正确的副本集。

mongo "mongodb+srv://svc-headless.my-namespace.cluster.local/?tls=false&ssl=false&replicaSet=rs0"

关于mongodb - 使用 mongodb+srv 连接到部署为有状态集的 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179722/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com