GCP kubernetes-入口报告:所有后端服务都处于不健康状态

GCP kubernetes-入口报告:所有后端服务都处于不健康状态,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我对K8s相当陌生,但也不是很新,以至于我没有几个正在运行的堆栈,甚至没有一个生产站点:) 我注意到在一个新的部署中,入口如下所示: 类型:入口 负载平衡器:外部HTTP(S)LB 正在报告所有后端服务都处于不健康状态,这是奇怪的,因为该服务正在工作,并且已经有一周的时间提供流量 现在,仔细检查一下后端服务:k8s-be-32460--etcetc是令人不高兴的。因此,使用GUI,我单击 然后我开始看到前端有一个面向亚洲、欧洲和美洲的漏斗。似乎把所有的交通都输送到了欧洲。据推测,这对于分布式外

我对K8s相当陌生,但也不是很新,以至于我没有几个正在运行的堆栈,甚至没有一个生产站点:)

我注意到在一个新的部署中,入口如下所示:

类型:入口
负载平衡器:外部HTTP(S)LB
正在报告
所有后端服务都处于不健康状态
,这是奇怪的,因为该服务正在工作,并且已经有一周的时间提供流量

现在,仔细检查一下
后端服务:k8s-be-32460--etcetc
是令人不高兴的。因此,使用GUI,我单击

然后我开始看到前端有一个面向亚洲、欧洲和美洲的漏斗。似乎把所有的交通都输送到了欧洲。据推测,这对于分布式外部负载平衡器服务(根据文档)是正常的,我的集群位于欧洲。酷。除了

k8s-ig--etcetc   europe-west1-b   1 of 3 instances healthy
你说的三个例子中有一个?嗯?? 这是目前为止我所能做的。有人能解释一下吗

编辑:
好的,其中一个报告为不健康的节点实际上是来自默认节点池的节点。我现在已缩减到0个节点,因为据我所知,首选项是显式管理它们。只剩下2个节点。根据入口,其中1个不健康,尽管两者位于同一区域

更进一步,它在GUI中报告只有一个实例组实例是健康的。然而,这些实例是由GCP自动创建的,我不管理它们

有什么想法吗

Edit 2:
我通过SSH正确地跟踪了实例组中的每个VM,并在每个节点上执行健康检查。一个人确实失败了

只是一个简单的curl localhost:32460一个路由另一个不路由。虽然32460上有东西在监听,如图所示

tcp6       0      0 :::32460                :::*       LISTEN      - 
健康检查是
HTTP/32460

任何关于为什么单个节点会停止工作的想法。正如我所说,我不了解这个底层VM是如何配置的

现在想知道这是否只是一个简单的路由问题,但在这一点上它非常复杂。

这对我来说很有效:

在我的例子中,我公开了一个API,这个API没有默认路由,也就是说,如果我键入myIp,它将返回一个404错误(未找到)。因此,我做了一个测试,在Startup.cs上设置了一个“默认”路由,如下所示:

app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hola mundillo");
                });
                endpoints.MapControllers();
            });

然后,状态从“不健康”变为“正常”。也许这不是一个确定的解决方案,但也许,它可以帮助人们找到错误。

您能为该服务提供YAML吗?您是否设置了
externalTrafficPolicy:local
?@PatrickW是的,我设置了向应用程序公开实际客户端IP所需的
externalTrafficPolicy:local
。@PatrickW您想要web服务还是入口YAML?我还验证了每个web pod都在不同的节点上运行(即每个节点上一个)正如我所想的那样,没有什么必要阻止它在单个节点上运行两个pod。但是,它在每个节点上正确运行1个pod。请共享失败后端应用的部署/服务/入口yaml,因为您提供的故障排除步骤表明另一个正常工作。