从kubernetes pod连接mongodb示例时超时

kyvafyod  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(153)

我按照以下步骤在Hetzner上设置了一个Kubernetes集群:https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner

Client Version: v1.26.3
Kustomize Version: v4.5.7
Server Version: v1.26.4+k3s1
Mongosh Version: 1.8.1

我无法连接到我自己的mongodb服务器(docker部署)或mongodb.net上的托管服务器:

root@trustsigner-frontend-deployment-59644b6b55-pqgmm:/usr/share/nginx/html# mongosh mongodb+srv://<removed-user>:<removed-password>@cluster0.fdofntt.mongodb.net/test
Current Mongosh Log ID: 6447807561ebcee04b00165d
Connecting to:          mongodb+srv://<credentials>@cluster0.fdofntt.mongodb.net/test?appName=mongosh+1.8.1
MongoServerSelectionError: Server selection timed out after 30000 ms

同样的错误,当使用我自己的一个与mongodb://,而不是mongodb+srv//
但令人惊讶的是,在我的机器上(而不是在Kubernetes Pod中)安装的MongodbCompass或Mongosh可以使用相同的连接字符串
Ping到8.8.8.8或任何其他端都可以工作,我可以通过curl获取。但是没有机会建立mongodb连接。。

zysjyyx4

zysjyyx41#

在使用kube-hetzner时遇到了与您相同的问题,我查看了配置文件并找到了罪魁祸首:默认情况下,出站流量被过滤,除了一些常用的端口,如HTTP或HTTPS。
至少有两种解决方案:
1.将变量restrict_outbound_traffic设置为 false:https://github.com/kube-hetzner/terraform-hcloud-kube-hetzner/blob/master/kube.tf.example#L395
1.添加防火墙规则以允许端口27017上的出站通信。
完成后,连接到Mongo Atlas集群的工作非常完美!

相关问题