我有一个在Amazon AWS上运行的Kubernetes集群,这些集群内部都很好,我知道如何让集群内的集群彼此通信。 但是,由于各种原因,我也有一个单独的EC2实例运行MongoDB控制器。 这不是集装箱化的,不受Kubernetes控制。
我的程序(一个节点快车应用程序)位于公共子网上,而数据库位于私有子网上。 数据库是使用标准的AWS MongoDB模板从这里设置的: https : //aws.amazon.com/blogs/aws/mongodb-on-the-aws-cloud-new-quick-start-reference-deployment/在我的代码我试图通过: mongodb://user:[email protected]:27017/users ,并确保在users数据库中存在该users名和密码。 我甚至在MongoDBconfiguration中禁用了对公钥的引用,以防发生这种情况(尽pipe如果我能够基本设置工作,我会看到它们的值)。
我已经调整了数据库实例的安全组,以允许端口27017上的Kubernetes实例(它们都在同一个VPC中)的连接。但是,我没有做任何特别的事情,或者主机或者主机让它看到一个半kubernetes集群之外的本地networkingIP。 我不知道是否甚至需要(我说“半本地”,因为它是一个10.xxx范围的地址,但与主机实例相邻,而不是我认为在Kubernete自己的地址空间内运行的pod)。
基本上,我不能连接到数据库,我不知道为什么(或者我怀疑我知道为什么,但不知道如何解决它)。 我不认为它是一个权限的事情,因为用最大的日志冗长,数据库显示没有连接的企图,甚至被拒绝的(但我仍然对它开放 – 我想它可以被拒绝在一个更高的水平) 。 我怀疑这是一个IP映射问题,但我远不是专家。
有任何想法吗? 谢谢。 PS复制这篇文章,因为我被要求在这里张贴(尽pipe没有实际certificate这是一个基础设施问题):
https://stackoverflow.com/questions/47302330/how-do-i-connect-to-a-non-kubernetes-ec2-mongodb-instance-from-a-pod