Kubernetes中的程序化负载平衡

时间:2018-10-19 17:54:54

标签: kubernetes load-balancing

我有10个运行相同Java应用程序的副本。 我想跳过向运行完整垃圾回收周期/停止世界周期的副本的发送请求(使用jvm工具界面)。

ex:5个应用程序正在运行完整的GC周期, 5已完成GC循环。 因此,我想将流量路由到已完成GC周期的Pod。

pseduo代码: 1)负载平衡器接收到后端服务的传入REST请求。 2)确定不在完整GC周期中的副本。 3)使用轮询将请求路由到步骤2中找到的副本中的1个。

如果我们可以在kubernetes中做到这一点,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

我为您提供了一个概念,但是您需要在程序中添加一些部分。看一下readinessProbe

readinessProbe:指示容器是否准备好处理请求。如果就绪探针失败,则端点控制器将从与Pod匹配的所有服务的端点中删除Pod的IP地址。初始延迟之前的默认就绪状态为Failure。如果容器未提供就绪探测器,则默认状态为Success

这是配置示例,您也可以使用TCP套接字

readinessProbe:
  httpGet:
    path: /healthz
    port: 8181
  initialDelaySeconds: 5
  periodSeconds: 5

GC启动后,您将停止通过路径/healthz进行响应,并且kubelet将豆荚标记为不健康,然后等到它再次恢复健康为止,在您的情况下,这将是GC完成的时间。