GKE 上的 Kubernetes 服务间歇性连接失败

GKE 上的 Kubernetes 服务间歇性连接失败

几天来我一直在尝试诊断这个问题,并且很清楚发生了什么,但仍然不知道原因。

症状是来自其他 Pod 的请求,这些请求在 TCP 网络连接失败的情况下(EHOSTUNREACHECONNREFUSEDConnection reset by peerNo route to hostConnection refusedConnection timed out)发送到不同的服务。我详细查看了有关一个事件的日志,出于某种原因,9 秒内没有向支持该服务的 ReplicaSet 中的任何 Pod 发送任何下游请求。

我找不到任何明显的迹象来表明为什么到 Pod 的流量停止或重新启动,而这正是我需要帮助的地方,我真的不知道该去哪里查找或尝试什么。

还有一些可能相关的事情:

  • 每秒都会有一次就绪探测请求通过并成功响应 - 这些是唯一到达 Pod 的请求
  • DNS 解析似乎正在工作,因为一些 Pod 记录无法连接到服务解析的 IP
  • 集群日志显示io.k8s.core.v1.endpoints.update中断期间的 API 调用,但节点 IP 在addresses(不在notReadyAddresses)列表中
  • 该问题似乎更常发生在 Pod 被销毁(或创建)时,因此部署、自动伸缩或节点抢占时,但它也确实发生在副本数量稳定的情况下
  • 我们在 GKE 上运行着 Kubernetes 1.15 和 1.16,遗憾的是不是 VPC 原生的(别名 IP),因为这些集群是几年前创建的
  • 我们没有运行 Istio 或任何其他服务网格,但我现在很想这么做

在此先感谢您的任何建议!

答案1

此问题非常复杂,难以复制。需要使用相同配置的 OP 环境复制此问题。

如果你遇到可能由 Bug 引起的情况GKE,并且GCP几乎不可能复制(例如这个),最好的方法是联系Google 支持进行深入分析。

或者你可以公共问题追踪

相关内容