当Pod忙时指定给Kubernetes

时间:2019-09-18 07:05:31

标签: kubernetes microservices load-balancing docker-for-windows docker-desktop

我的一个微服务正在Kubernetes上运行。 我想在Pod忙时指定K8s负载均衡器,因为我当前无法正常运行。

一个例子:

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

所以我的问题是:我如何告诉Kubernetes POD 1忙,并且负载均衡器必须将请求2分发到POD 2?

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

2 个答案:

答案 0 :(得分:3)

您必须使用LivenessProbe

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

LivenessProbe可以是TCPHTTP

答案 1 :(得分:2)

正如普罗米修斯建议的那样,您可以使用活动度探针,我也建议将rediness probe加在一起。

您可以查看官方文档:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

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

在这种情况下,您不想杀死该应用程序,但也不想将其中的流量发送到Pod。 K8s提供了准备就绪探针以检测和缓解这些情况。装有报告其容器尚未就绪的容器的容器无法通过Kubernetes Services接收流量。