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