kubernetes部署的mongodb在使用本地Navicat连接时,报错连接失败,以及版本问题,或者其他网络问题等。
小编是深有体会,接下来,我把我遇到的问题以及处理方式做个简单叙述。
在k8s部署应用状态以及pod日志输出和集群内部访问都没问题,在使用外部本地连接时,报错如下:No suitable servers found:‘serverSelectionTimeoutMS’ coneection refused calling ismaster on ‘***:27017’
由于MongoDB Replica Set在连接过程会做一次节点间的互相识别(认识一下哪个节点是Primary,哪个节点是Secondary),而在K8S集群内部访问当然没有问题,可是如果外部网络想要进行连接,就容易出问题。K8S本身是以服务名.命名空间的形式进行网络访问通讯,外部以服务名.命名空间进行连接,返回得到的是经过kube-service DNAI后的IP,而Replica Set的hosts是以服务名或者服务名.命名空间组成,造成serverSelectionTimeoutMS。
C:\Windows\System32\drivers\etc\hosts添加一下字段:
127.0.1.11 mongo1.mongodb-01
127.0.1.12 mongo2.mongodb-01
127.0.1.13 mongo3.mongodb-01
我已一个节点演示:
按照如上配置,端口一定是我们使用NodePort暴露的端口!
点击发现~不报错!!
然后点击测试连接!!
连接成功!!!!!!
=============================================
如果测试连接报错如下:
说明你使用的版本和Navicat不兼容,怎么办呢?只能修改兼容的版本!