几天来我一直在尝试诊断这个问题,并且很清楚发生了什么,但仍然不知道原因。
症状是来自其他 Pod 的请求,这些请求在 TCP 网络连接失败的情况下(EHOSTUNREACH
、ECONNREFUSED
、Connection reset by peer
、No route to host
、Connection refused
等Connection 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 或任何其他服务网格,但我现在很想这么做
在此先感谢您的任何建议!