我是K8的新手,但不是那么新,以至于我没有几个正在运行的堆栈,甚至还没有生产现场:)
我在新部署中注意到如下所示的入口:
Type: Ingress
Load balancer: External HTTP(S) LB
正在报告All backend services are in UNHEALTHY state
,这很奇怪,因为该服务正在运行,并且已经/已经为其提供了流量一周。
现在,更仔细地检查Backend services: k8s-be-32460--etcetc
是令人不快的。因此,使用GUI,我单击了该按钮。
然后我开始看到带有面向亚洲,欧洲和美洲的渠道的前端。这似乎使所有通往欧洲的交通都集中在了一起。大概,这对于分布式外部负载均衡器服务(根据文档)是正常的,并且我的集群位于欧洲。凉。除了...
k8s-ig--etcetc europe-west1-b 1 of 3 instances healthy
您说的3个实例中有1个是?嗯? 这是到目前为止我所了解的。谁能照亮?
Edit:
好,因此报告为不正常的节点之一实际上是default-node-pool中的一个节点。现在,我已缩小到0个节点,因为据我所知,首选是显式管理它们。只剩下2个节点。尽管入口处在同一区域,但其中1个入口不健康。
以某种方式进一步挖掘它正在GUI中报告只有一个实例组实例运行状况良好。但是这些实例是由GCP自动创建的,我不对其进行管理。
有什么想法吗?
Edit 2:
我一直遵循正确的方法,通过SSH到达实例组中的每个VM,并在每个节点上执行运行状况检查。确实确实失败了。
一条简单的curl localhost:32460
仅一条路线而另一条路线没有。如图所示,虽然在32460上有监听的声音
tcp6 0 0 :::32460 :::* LISTEN -
健康检查为HTTP / 32460
任何想法为何单个节点都将停止工作。就像我说的那样,我不了解如何配置此基础VM。
现在想知道这是否只是某种简单的路由问题,但在这一点上却非常复杂。
答案 0 :(得分:0)
这对我有用:
就我而言,我暴露了一个 API,这个 API 没有默认路由,也就是说,如果我输入 myIp,它会返回 404 错误(未找到)。所以,我做了一个测试,并在我的 Startup.cs 上放置了一个“默认”路由,如下所示:
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
await context.Response.WriteAsync("Hola mundillo");
});
endpoints.MapControllers();
});
然后,状态从不健康变为正常。也许这不是一个明确的解决方案,但也许,它可以帮助某人找到错误。