来自 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的主要内容,如果未能解决你的问题,请参考以下文章
如何将“–kubelet-extra-args”传递给 Terraform aws_eks_node_group 创建的 AWS EKS 节点组?