最近,我们将部分生产基础架构移至了Kubernetes。许多Pod通过AWS上的LoadBalancer服务公开。这将创建一个ELB,向该ELB注册集群中的每个节点,并配置一个节点端口以将ELB端口映射到Pod。我们的应用程序能够通过负载平衡器进行连接,但是BackendConnectionErrors的数量(由cloudwatch报告)比请求数高5-7倍。我不确定如何调试。

报告的后端连接错误数与任何应用程序层错误度量均不相关。这使我得出的结论是,某种基础架构问题可能会因重试而加剧。但是,我不知道如何调试此问题。

我的假设是以下两者之一或全部:


ELB缺少一些奇怪的AWS设置用于连接管理
群集中的节点具有一些sysctl设置或其他网络配置,这些设置阻止了ELB上的连接数量。 />我的问题是:如何在集群中的实例上调试/跟踪一些与TCP /网络相关的指标?

有关有问题的CloudWatch指标的更多信息。

评论

您确定所有节点都已启动并正在运行吗?如果有人在k8s级别失败,ELB不能告知这一点,并且仍会发送请求...

#1 楼

我对这个问题的解决方案是重新设计我的服务。在我的问题中,安装程序有一个带有〜10个端口的K8s Service。我将设置修改为每个Service使用一个端口。问题消失了。我不知道为什么。这使我怀疑节点本身是否存在问题,或将连接路由到正确的节点端口时是否有些复杂。因此,我谨慎地再次公开太多端口。