gpt4 book ai didi

kubernetes - 服务器选择在 30000 毫秒后超时 {"name":"MongooseTimeoutError","reason": {"name" :"MongoNetworkError"}}

转载 作者:行者123 更新时间:2023-12-03 18:07:21 25 4
gpt4 key购买 nike

上下文

我正在使用 GCP,更具体地说是 GKE 在容器/pod 中部署我的应用程序。我要部署的应用程序位于节点 js(express js)中。此应用连接到 MongoDB Atlas (免费层级 M0)

在本地运行项目时没有问题。它连接到数据库,我可以毫无问题地添加/删除文档。

我允许任何人 (0.0.0.0/0) 访问我的 MongoDB Atlas 集群,以便更轻松地进行调试。

当我使用 CI/CD Deploy to GKE 部署我的项目时,一切都很顺利。

问题

一旦我部署了我的项目,事情就开始变得棘手了。我得到一个 CrashLoopBackOff。在检查日志后它一直崩溃是我发现的:

错误:服务器选择在 30000 毫秒后超时 {"name":"MongooseTimeoutError","re​​ason":{"name":"MongoNetworkError"}}

潜在客户

我认为问题是我的 pod 无法通过其常规端口 27017 连接到 MongoDB Atlas,向我发送超时错误。

这是我尝试过的:

  • 在我的 GCP VPC 网络中添加一个新的防火墙规则:gcloud compute firewall-rules create allow-mongodb --allow tcp:27017

  • 在我的 deployment.yml 中添加以下键/值:dnsPolicy: Default

结论

在这个问题上花了几个小时之后,我仍然没有找到任何解决方案,而且我的想法已经用完了。仅供引用,我是 GCP 和 Kubernetes 的新手,所以我可能在这里遗漏了一些重要的东西,但不确定是什么。

如果某个好心的人最终看到了那个帖子并且知道答案,如果他/她能在这里帮助我,我会很高兴。

祝你好运。

干杯,

最佳答案

如果您认为网络策略已通过 GCP 防火墙规则正确设置,让我们在 kubernetes 中逐步解决它。

  1. 检查您是否可以从容器本身连接到 mongodb Atlas。
kubectl exec <node_app_pod> --command -- curl <mongo_url>:27017
  1. 检查 kubernetes 中的网络策略。为了简化,允许所有导出
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all
spec:
podSelector: {}
egress:
- {}
policyTypes:
- Egress

如果你只想设置27017端口,你可以通过这个文档来调整:

https://kubernetes.io/docs/concepts/services-networking/network-policies/

让我知道现在是否更好。

关于kubernetes - 服务器选择在 30000 毫秒后超时 {"name":"MongooseTimeoutError","reason": {"name" :"MongoNetworkError"}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com