Pod 无法访问另一个节点上的 1 个特定服务

问题描述

我们有一个 AKS 集群,上面部署了一些 helm chart。
在 helm 部署之后,一个节点 (node-A) 上的服务(我们称之为 my-service)不再能够从另一个节点 (node-B) 上的特定 pod (my-pod) 访问。
在部署时,我没有注意到,但可能 pod 从一个节点移动到另一个节点。
写下我的发现和执行路径以帮助他人:

  • 尝试从 my-pod 解析(kubectl exec -it <pod> bashcurl -v <host>)other-service(pod 在节点 A 上):这行得通。
  • 尝试从节点 B 上的另一个 pod 解析 my-service:不起作用。
  • 尝试从节点 A 上的 pod 解析 my-service:这行得通。

结论:节点 B 上的所有 pod 都无法访问 my-service。节点 A 上的所有其他服务都可以从节点 B 上的 pod 访问。

在检查命名空间 kube-proxy (kube-system) 中 kubectl get pods -o wide -n kube-system | grep kube-proxy 的特定节点上的日志时,我一遍又一遍地重复出现以下日志行:

I0120 08:05:56.330135       1 reflector.go:185] Listing and watching *v1.Service from k8s.io/client-go/informers/factory.go:135
E0120 08:05:56.330535       1 reflector.go:153] k8s.io/client-go/informers/factory.go:135: Failed to list *v1.Service: Get https://cluster.hcp.francecentral.azmk8s.io:443/api/v1/services?labelSelector=%21service.kubernetes.io%2fheadless%2C%21service.kubernetes.io%2Fservice-proxy-name&limit=500&resourceVersion=0: write tcp 10.240.0.35:52880->51.11.230.223:443: write: broken pipe

重新启动该特定 pod 后,可以再次从 my-pod 访问 my-service。

我对此有疑问:

  1. 我们如何找到造成这种情况的根本原因?我们希望避免这种情况。
  2. 能否在集群中自动检测到此问题?我们能否自动修复上述问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...