簡體   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

我正在嘗試使用 NodeJs、Kubernetes、Ingress 和 skaffold 在基於微服務的項目中連接到 MongoDB。

我在做skaffold dev時遇到了兩個錯誤:

  1. MongoNetworkError:第一次連接時無法連接到服務器 [auth-mongo-srv:21017] [MongoNetworkTimeoutError:連接超時。

  2. Mongoose 默認連接錯誤:MongoNetworkError: MongoNetworkError: failed to connect to server [auth-mongo-srv:21017] on first connect [MongoNetworkTimeoutError: connection timed out at connectionFailureError.

我的 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

我的服務器.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)
})

附加信息:

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

我也試過:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM