简体   繁体   English

无法连接到 MongoDB:MongoNetworkError & MongoNetworkError connected to kubernetis MongoDB pod with mongoose

[英]Unable to connect to MongoDB: MongoNetworkError & MongoNetworkError connecting to kubernetis MongoDB pod with mongoose

I am trying to connect to MongoDB in a microservice-based project using NodeJs, Kubernetes, Ingress, and skaffold.我正在尝试使用 NodeJs、Kubernetes、Ingress 和 skaffold 在基于微服务的项目中连接到 MongoDB。

I got two errors on doing skaffold dev :我在做skaffold dev时遇到了两个错误:

  1. MongoNetworkError: failed to connect to server [auth-mongo-srv:21017] on first connect [MongoNetworkTimeoutError: connection timed out. MongoNetworkError:第一次连接时无法连接到服务器 [auth-mongo-srv:21017] [MongoNetworkTimeoutError:连接超时。

  2. Mongoose default connection error: MongoNetworkError: MongoNetworkError: failed to connect to server [auth-mongo-srv:21017] on first connect [MongoNetworkTimeoutError: connection timed out at connectionFailureError. Mongoose 默认连接错误:MongoNetworkError: MongoNetworkError: failed to connect to server [auth-mongo-srv:21017] on first connect [MongoNetworkTimeoutError: connection timed out at connectionFailureError.

My auth-mongo-deploy.yaml:我的 auth-mongo-deploy.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-mongo-deploy
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth-mongo
  template:
    metadata:
      labels:
        app: auth-mongo
    spec:
      containers:
        - name: auth-mongo
          image: mongo
---
apiVersion: v1
kind: Service
metadata:
  name: auth-mongo-srv
spec:
  selector:
    app: auth-mongo
  ports:
    - name: db
      protocol: TCP
      port: 27017
      targetPort: 27017

My server.ts我的服务器.ts

const dbURI: string = "mongodb://auth-mongo-srv:21017/auth"
 
logger.debug(dbURI)
logger.info('connecting to database...')
 
// changing {} --> options change nothing!
mongoose.connect(dbURI, {}).then(() => {
    logger.info('Mongoose connection done')
    app.listen(APP_PORT, () => {
      logger.info(`server listening on ${APP_PORT}`)
    })
    console.clear();
  }).catch((e) => {
    logger.info('Mongoose connection error')
    logger.error(e)
})

Additional information:附加信息:

1. pod is created:

rhythm@vivobook:~/Documents/TicketResale/server$ kubectl get pods
NAME                                 STATUS  RESTARTS   AGE
auth-deploy-595c6cbf6d-9wzt9         1/1     Running   0          5m53s
auth-mongo-deploy-6b96b7798c-9726w   1/1     Running   0          5m53s
tickets-deploy-675b7b9b58-f5bzs      1/1     Running   0          5m53s

2. pod description:

    kubectl describe pod auth-mongo-deploy-6b96b7798c-9726w
    Name:         auth-mongo-deploy-694b67f76d-ksw82
    Namespace:    default
    Priority:     0
    Node:         minikube/192.168.49.2
    Start Time:   Tue, 21 Jun 2022 14:11:47 +0530
    Labels:       app=auth-mongo
                  pod-template-hash=694b67f76d
                  skaffold.dev/run-id=2f5d2142-0f1a-4fa4-b641-3f301f10e65a
    Annotations:  <none>
    Status:       Running
    IP:           172.17.0.2
    IPs:
      IP:           172.17.0.2
    Controlled By:  ReplicaSet/auth-mongo-deploy-694b67f76d
    Containers:
      auth-mongo:
        Container ID:   docker://fa43cd7e03ac32ed63c82419e5f9722deffd2f93206b6a0f2b25ae9be8f6cedf
        Image:          mongo
        Image ID:       docker-pullable://mongo@sha256:37e84d3dd30cdfb5472ec42b8a6b4dc6ca7cacd91ebcfa0410a54528bbc5fa6d
        Port:           <none>
        Host Port:      <none>
        State:          Running
          Started:      Tue, 21 Jun 2022 14:11:52 +0530
        Ready:          True
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zw7s9 (ro)
    Conditions:
      Type              Status
      Initialized       True 
      Ready             True 
      ContainersReady   True 
      PodScheduled      True 
    Volumes:
      kube-api-access-zw7s9:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type    Reason     Age   From               Message
      ----    ------     ----  ----               -------
      Normal  Scheduled  79s   default-scheduler  Successfully assigned default/auth-mongo-deploy-694b67f76d-ksw82 to minikube
      Normal  Pulling    79s   kubelet            Pulling image "mongo"
      Normal  Pulled     75s   kubelet            Successfully pulled image "mongo" in 4.429126953s
      Normal  Created    75s   kubelet            Created container auth-mongo
      Normal  Started    75s   kubelet            Started container auth-mongo

I have also tried:我也试过:

kubectl describe service auth-mongo-srv
Name:              auth-mongo-srv
Namespace:         default
Labels:            skaffold.dev/run-id=2f5d2142-0f1a-4fa4-b641-3f301f10e65a
Annotations:       <none>
Selector:          app=auth-mongo
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.100.42.183
IPs:               10.100.42.183
Port:              db  27017/TCP
TargetPort:        27017/TCP
Endpoints:         172.17.0.2:27017
Session Affinity:  None
Events:            <none>
And then changed:

const dbURI: string = "mongodb://auth-mongo-srv:21017/auth" to
const dbURI: string = "mongodb://172.17.0.2:27017:21017/auth"
generated a different error of MongooseServerSelectionError.

const dbURI: string = "mongodb://auth-mongo-srv:27017/auth"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法连接到 MongoDb(MongoNetworkError:连接 ETIMEDOUT) - Unable to connect to MongoDb (MongoNetworkError: connect ETIMEDOUT) 无法使用 mongoose 连接到 mongoDB Atlas:{ MongoNetworkError:无法连接到服务器} - Cannot connect to mongoDB Atlas using mongoose : { MongoNetworkError: failed to connect to server } 如何正确连接到 mongodb.atlas? Mongo网络错误 - how to properly connect to mongodb.atlas? MongoNetworkError MongoNetworkError:第一次连接时无法连接到服务器 [mongodb:27017] - MongoNetworkError: failed to connect to server [mongodb:27017] on first connect [ MongoNetworkError ],当我在 Heroku 上部署时,应用程序没有连接到 mongoDB - [ MongoNetworkError ], when I deploy on Heroku, the App doesn't connect to mongoDB 节点 Js,MongoDb“错误:MongoNetworkError:连接 ECONNREFUSED::1:27017” - Node Js , MongoDb " error: MongoNetworkError: connect ECONNREFUSED ::1:27017" MongoNetworkError:无法连接到服务器“MongoNetworkError” - MongoNetworkError: failed to connect to server 'MongoNetworkError' 通过 Node.Js 进行 mongoDB 连接的 MongoNetworkError - MongoNetworkError on mongoDB connection through Node.Js node和mongodb的问题 - UnhandledPromiseRejectionWarning:MongoNetworkError:connection 4 - Problems with node and mongodb - UnhandledPromiseRejectionWarning: MongoNetworkError: connection 4 Mongoose MongoNetworkError // 连接错误 - Mongoose MongoNetworkError // connection error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM