从 Kubernetes 集群连接到 MongoDB Droplet

维克多·比格利

我有一个带有一些部署的 Kubernetes 集群和一个运行在 DigitalOcean 上的 LoadBalancer 服务,我需要连接到运行在集群的小滴中的 MongoDB ,但也在 DigitalOcean 上。

我已经允许 MongoDB 机器从 LoadBalancer 服务生成的外部 IP 连接到 27017 端口,但是,从 Kubernetes 到 mongo 的连接请求似乎不是使用此 IP 进行的,导致在部署我的应用程序时出现以下警告(这使得 Pod 永远重启)。

ConnectionError: Mongodb connection failed after 1 attempts with message: connection timed out
    at /usr/app/node_modules/@nindoo/mongodb-data-layer/dist/connections/mongodb.js:38:23
    at Generator.throw (<anonymous>)
    at rejected (/usr/app/node_modules/@nindoo/mongodb-data-layer/dist/connections/mongodb.js:6:65)

当我在本地运行我的应用程序时,连接工作得很好(因为我将我的本地机器公共 IP 添加到 MongoDB droplet 上的防火墙设置)。出于安全原因,我不想允许来自“任何地方”的请求

可以做我想做的事情还是应该在Kubernetes集群中部署mongo?

我正在使用 Kubernetes v1.18.3

编辑:

我正在使用@nindoo/mongodb-data-layer npm 包连接到 mongo 这是我公司团队创建的一个包,它实现了createConnection一个将配置对象作为参数的函数:


import { createConnection } from '@nindoo/mongodb-data-layer'

const config = { 
  database: {
    mongodb: {
      uri: env.get('DATABASE_MONGODB_URI', 'mongodb://<droplet_ip>:27017/'),
      dbName: env.get('DATABASE_MONGODB_DBNAME', '<database_name>'),
      maximumConnectionAttempts: 1,
      options: {
        authSource: '<authenticationDatabase>',
        auth: {
          user: '<admin_user>',
          password: '<admin_password>',
        }
      }
    }
  }
}

const mongodbConnection = await createConnection(config.database.mongodb)
塔伦·科斯拉

k8s 应用的 Egress IP 与您的 LoadBalancer IP 不同。要确认进入 pod 并运行curl -s checkip.dyndns.org. 这会给你的 Egress IP 。您可以在防火墙中允许它并工作。

理想的方法是固定 Egress IP,而 Digital Ocean 不支持这里的博客您可以跟进 Digital Ocean。

您还可以根据需要使用 Cloud NAT 修复出口 IP。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

应用程序无法连接到DigitalOcean Droplet上的mongodb

无法连接到MongoDB集群

无法从集群内部连接到kubernetes API

本地 Docker 连接到 Kubernetes 集群

如何从Kubernetes集群外部连接到CockroachDB?

Google Cloud Kubernetes无法连接到集群

从 kubernetes 集群内部连接到 Postgresql

连接到 Kubernetes 上的 MongoDB ReplicaSet

使用mongoengine连接到MongoDB Atlas集群

使用Go代码从Kubernetes连接到外部Kubernetes集群

Socketio 无法从托管站点连接到 Droplet

从Golang连接到kubernetes-aerospike网格集群

Graylog 无法连接到 Kubernetes 集群中的 Elasticsearch

无法连接到外部IP上的Kubernetes集群

连接到Kubernetes集群内部的Redis(从舵图)

将Kibana连接到Kubernetes集群中的Elasticsearch

无法将工作程序节点连接到kubernetes集群

如何将 Docker 中的 Prometheus 连接到 Kubernetes 集群?

Kubernetes node.js容器无法连接到MongoDB Atlas

如何连接到 Kubernetes 上的 MongoDB 副本集

Yii2 无法连接到 MongoDB 集群

将Laravel Jenssegers连接到MongoDB Atlas集群

如何将NodeJ连接到Atlas mongodb集群

连接到 mongodb atlas 集群和本地主机

如何为在kubernetes集群上运行的Kafka Connect配置MongoDB官方源连接器

如何从集群外部访问Kubernetes中的MongoDB

无法远程连接到 digitalocean droplet - 不允许密码

连接到 DigitalOcean droplet 上的 Hasura Postgres 数据库

尝试连接到有状态集Mongodb Kubernetes部署时没有连接错误