我已经在GKE中建立了一个集群。我已经对其进行配置,以部署一个运行MeteorJS应用程序的Docker映像,该映像通过副本集连接到托管的MongoDB服务。
连接字符串URI为:
mongodb:// [用户名]:[密码] @ [主机1]:20210,[主机2]:20210,[主机3]:20210 / [数据库]?ssl = true
当我的Pod启动时,它们进入崩溃循环并不断报告:
MongoError:超时时没有可用的mongos代理。 (/opt/meteor/dist/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/topologies/monologies.js:759:28)
我已阅读到GKE群集具有群集本地DNS,因此我为每个副本集主机配置了ExternalName
服务(即:我更新了连接URI以具有主机别名并将其映射到外部域)
但这没有效果,并且错误仍然存在。
我觉得我这里一定缺少什么。以这种方式从本地计算机连接。我们还在Azure上运行Docker Swarm,并且该应用程序还可以从那里连接。
有人能阐明GKE在这里有何不同吗?我错过了一步吗?
非常感谢, 本
编辑:我更新了连接字符串以引用IP地址而不是域名。问题仍然存在,所以也许这不是DNS问题。
我还部署了一个负载平衡器以暴露集群中的Pod,以期有所帮助。虽然我没想到,但没想到。