来自 EKS 节点的 ERR_CONNECTION_RESET

Posted

技术标签:

【中文标题】来自 EKS 节点的 ERR_CONNECTION_RESET【英文标题】:ERR_CONNECTION_RESET from EKS nodes 【发布时间】:2020-04-05 22:10:51 【问题描述】:

我有运行现有应用程序的 EC2 服务器。 EC2 实例位于私有子网上,ELB 是在公共子网中创建的,可以访问特定的 *** IP。因此,每当我使用 *** 时,我都能够访问我的应用程序,如果我不在该 *** IP 之外,则我无法访问该应用程序。

现在我已经创建了 EKS 集群,我正在使用 kubectl 和应用程序的 docker 映像部署我的应用程序。奇怪的是,只要我不在 *** 上(我调整了安全组以允许来自所有 IP 的所有流量)并且每当我在 *** 上,我在 chrome 和 curl 显示中收到“ERR_CONNECTION_RESET”,应用程序就可以正常工作 - 从服务器收到空响应。

到目前为止,我已经尝试过以下事情。由于我对 EKS 比较陌生,所以我找不到太多东西。 1. 应用相同的安全组 - 未解决 2. 检查所有 pod 的日志——无论我从“kubectl get po --all-namespaces”收到哪个 pod——没有问题出现 3.检查/var/log/messages 4.尝试更改应用程序端口 5. kubectl get events 没有显示任何关于服务器为什么发回空响应的内容。 6. 尝试 SSH 到节点并尝试 curl localhost:30080 并且它工作正常,但是当尝试从我的机​​器(在 *** 上)进行 curl 时,它失败并返回空响应。

请再次注意,当我在 *** 之外时,应用程序运行完全正常。此外,我的旧应用程序(在 EC2 上)在 *** 上运行良好。

提前致谢!

【问题讨论】:

我猜,企业 *** 在某处阻塞了 IP。我添加了 nginx 入口控制器(helm install stable/nginx-ingress),它也开始在 *** 上工作。现在我没有收到任何 err_connection_resets。什么 nginx 入口控制器正在做什么让 *** 开心?这次我不想安装任何入口控制器。谁能指出添加 nginx 入口控制器后 *** 很高兴的原因是什么? 【参考方案1】:

最后发现问题出在公司 *** 阻塞了除 80 和 443 以外的所有端口。当我创建服务时,我想让 ELB 暴露端口 5000。所以我想 elb-host:5000 会指向开发服务节点端口,它是 30080。当我不在 *** 上时,这非常有效。但是当我使用 *** 连接站点时,公司流量阻塞了 ELB 上的端口 5000。在我将端口更改为 80 后,它开始按预期工作。

使用 nginx 时,它使用端口 80 而不是我的预期端口 5000 创建 ELB。我没有注意到端口更改,并认为这是由于 IP 阻塞而发生的。

【讨论】:

以上是关于来自 EKS 节点的 ERR_CONNECTION_RESET的主要内容,如果未能解决你的问题,请参考以下文章

在创建eks节点组的同时更新安全组的地形

如何将“–kubelet-extra-args”传递给 Terraform aws_eks_node_group 创建的 AWS EKS 节点组?

使用 AWS 负载均衡器将来自 EKS 的 FastAPI 公开给外部世界

AWS EKS 0/1 节点可用。 1 豆荚不足

AWS EKS 集群自动扩展

如何使用 Terraform for Amazon EKS 设置节点污点