mongodb - AKS mongodb 不断崩溃 : connect ECONNREFUSED

标签 mongodb azure kubernetes azure-aks

伙计们,我是 k8s 新手,我正在尝试使用 ACR 在 Azure Kubernetes 服务上使用 mongodb 部署微服务。我已经创建了一个 AKS 集群,微服务的部署运行良好,但问题出在 mongo 数据库的部署上。由于某种原因,它不断崩溃,我不知道为什么。

I get the error : MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017 ; when looking into logs

mongo.yml 文件:

kind: Deployment
metadata:
  name: mongo-deployment
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo
        ports:
          - containerPort: 27017
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
        env:
          - name: MONGO_INITDB_ROOT_USERNAME
            valueFrom: 
              secretKeyRef:
                name: mongo-secret
                key: mongo-root-username
          - name: MONGO_INITDB_ROOT_PASSWORD
            valueFrom: 
              secretKeyRef:
                name: mongo-secret
                key: mongo-root-password
---
apiVersion: v1
kind: Service
metadata:
  name: mongo-service
spec:
  selector:
    app: mongodb
  ports:
  - protocol: TCP
    port: 27017
    targetPort: 27017

mongo-configmap.yml 文件:

apiVersion: v1
kind: ConfigMap
metadata:
  name: mongo-configmap
data:
  connection_string: mongodb://username:password@mongo-service:27017

mongo-secret.yml 文件:

kind: Secret
metadata:
  name: mongo-secret
type: Opaque
data:
  mongo-root-username: dXNlcm5hbWU=
  mongo-root-password: cGFzc3dvcmQ=

尝试运行“kubectl描述pod”时的日志:

Namespace:        default
Priority:         0
Service Account:  default
Node:             aks-nodepool1-85690495-vmss000000/10.224.0.4
Start Time:       Tue, 25 Apr 2023 11:34:41 +0300
Labels:           app=mongodb
                  pod-template-hash=5d456c788f
Annotations:      <none>
Status:           Running
IP:               10.244.0.37
IPs:
  IP:           10.244.0.37
Controlled By:  ReplicaSet/mongo-deployment-5d456c788f
Containers:
  mongodb:
    Container ID:   containerd://6862b0a5291f7a4a6d1a7f81ba5b5fe2286f04a7d8aa7817cad2b48142190352
    Image:          mongo
    Image ID:       docker.io/library/mongo@sha256:9c8a0a019671ed7d402768d4df6dddcc898828e21e9f7b90a34b55fe8ca676ac
    Port:           27017/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    1
      Started:      Tue, 25 Apr 2023 12:03:17 +0300
      Finished:     Tue, 25 Apr 2023 12:03:21 +0300
    Ready:          False
    Restart Count:  10
    Limits:
      cpu:     500m
      memory:  128Mi
    Requests:
      cpu:     250m
      memory:  64Mi
    Environment:
      MONGO_INITDB_ROOT_USERNAME:  <set to the key 'mongo-root-username' in secret 'mongo-secret'>  Optional: false
      MONGO_INITDB_ROOT_PASSWORD:  <set to the key 'mongo-root-password' in secret 'mongo-secret'>  Optional: false
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-l6l84 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  kube-api-access-l6l84:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   Burstable
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                             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  30m                    default-scheduler  Successfully assigned default/mongo-deployment-5d456c788f-587r6 to aks-nodepool1-85690495-vmss000000   
  Normal   Pulled     30m                    kubelet            Successfully pulled image "mongo" in 735.583384ms (735.618884ms including waiting)
  Normal   Pulled     30m                    kubelet            Successfully pulled image "mongo" in 788.963634ms (788.974334ms including waiting)
  Normal   Pulled     30m                    kubelet            Successfully pulled image "mongo" in 725.867064ms (725.879864ms including waiting)
  Normal   Created    29m (x4 over 30m)      kubelet            Created container mongodb
  Normal   Started    29m (x4 over 30m)      kubelet            Started container mongodb
  Normal   Pulled     29m                    kubelet            Successfully pulled image "mongo" in 783.028263ms (783.042864ms including waiting)
  Normal   Pulling    27m (x5 over 30m)      kubelet            Pulling image "mongo"
  Normal   Pulled     27m                    kubelet            Successfully pulled image "mongo" in 738.599919ms (738.611919ms including waiting)
  Warning  BackOff    5m57s (x107 over 30m)  kubelet            Back-off restarting failed container

据我了解,此问题是由于 mongodb 实例未运行而引起的,但我找不到此问题的答案。我一直尝试删除 pod 并重新创建它,但它不起作用。

有人可以帮我吗?如果能找到解决方案,我将不胜感激。谢谢!

最佳答案

查看此输出:

State:          Waiting
  Reason:       CrashLoopBackOff
Last State:     Terminated
  Reason:       OOMKilled

由于 OOM(内存不足)错误,pod 似乎已终止,现在处于 CrashLoopBackOff 状态

当容器消耗的内存超过为其设置的限制时,就会发生OOM错误。

就您而言,增加内存限制应该可以解决此问题。

limits:
  memory: "128Mi"
  cpu: "500m"

希望对你有帮助!

关于mongodb - AKS mongodb 不断崩溃 : connect ECONNREFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76099475/

相关文章:

ruby - 找不到 Mongo Ruby 驱动程序游标错误

node.js - 如何在分组后对数组值进行排序 - mongodb

mongodb - 在 MongoDB 中比较日期(moment.js)

python - Langchain pandas 代理 - Azure OpenAI 帐户

docker - 通过 Helm 缓慢安装/升级(针对 Kubernetes)

docker - 容器创建停留在ContainerCreating状态

mongodb - Meteor Mongo - 数据库存储位置

Azure 应用程序网关文件上传限制

azure - Windows Azure VPN - 如何安装/使用 Azure Connect

kubernetes - 带有选择器的 headless 服务没有获得端点