当Pod为“时,指定给Kubernetes”;“忙”;

当Pod为“时,指定给Kubernetes”;“忙”;,kubernetes,microservices,load-balancing,docker-for-windows,docker-desktop,Kubernetes,Microservices,Load Balancing,Docker For Windows,Docker Desktop,我的一个微服务正在Kubernetes上运行。 我想在pod繁忙时指定K8s负载平衡器,因为我当前得到的行为不正常 一个例子: 我有8个吊舱在运行,每个吊舱一次可以处理1个请求。每个请求占用分配给pod的CPU核心的70%到100%。 但当我向应用程序发送8个请求时,Kubernetes不会将这些请求发送到8个pod,而是尝试只使用一个。由于我(通过线程池)阻止应用程序的每个副本一次只使用一个线程,所以请求当然会排队等待pod 1 所以我的问题是:我如何告诉Kubernetes POD 1正忙,

我的一个微服务正在Kubernetes上运行。 我想在pod繁忙时指定K8s负载平衡器,因为我当前得到的行为不正常

一个例子:

我有8个吊舱在运行,每个吊舱一次可以处理1个请求。每个请求占用分配给pod的CPU核心的70%到100%。 但当我向应用程序发送8个请求时,Kubernetes不会将这些请求发送到8个pod,而是尝试只使用一个。由于我(通过线程池)阻止应用程序的每个副本一次只使用一个线程,所以请求当然会排队等待pod 1

所以我的问题是:我如何告诉Kubernetes POD 1正忙,负载平衡器必须将请求2发送到POD 2

注意:出于开发和测试目的,我在Windows 10和kubectl上使用Docker Desktop(Docker For Windows)。

您必须使用

当Pod无法处理请求时,其IP将从服务端点删除,因此不会向其转发流量


LivenessProbe可以是或

,正如prometherion建议的那样,您可以使用liveness probe,并且我建议将
辐射探测器
添加在一起

您可以查看官方文件:

有时,应用程序暂时无法为流量提供服务。例如,应用程序在启动时首先需要加载大数据或配置文件


在这种情况下,您不想终止应用程序,但也不想将流量发送到pods。K8s提供准备探测,以检测和缓解这些情况。如果吊舱中的容器报告未准备就绪,则不会通过Kubernetes服务接收流量。

谢谢您的回答。我试过了,但库伯内特的行为还是一样。Pod已正确禁用,但Kubernetes不会向其他Pod发送请求。从服务检查中,标签与Pod和服务相同。是的,标签相同。如果Pod内运行的容器,则Pod状态将就绪,服务将分流交通。除非和直到集装箱没有运行或应用终点没有提供200服务将转移交通到豆荚。我认为你的答案是好的,因为它回答我的问题。不幸的是,它没有解决我的问题,因为问题实际上在另一个地方,问了这个问题后,我才意识到这一点。@Harsh Manvar的答案更合适:LivenessProbe&ReadinesProbe FTW您提供了最简单的解决方案我想了很久以后阅读您在我脑海中的答案是关于LivenessProbe&ReadinesProbe来的@谢谢你的回答。就像你说的,来自Harsh Manvar的答案更合适,所以我会接受这个。