伙计们,我是 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/