我有10个运行相同Java应用程序的副本。 我想跳过向运行完整垃圾回收周期/停止世界周期的副本的发送请求(使用jvm工具界面)。
ex:5个应用程序正在运行完整的GC周期, 5已完成GC循环。 因此,我想将流量路由到已完成GC周期的Pod。
pseduo代码: 1)负载平衡器接收到后端服务的传入REST请求。 2)确定不在完整GC周期中的副本。 3)使用轮询将请求路由到步骤2中找到的副本中的1个。
如果我们可以在kubernetes中做到这一点,有人可以帮我吗?
答案 0 :(得分:1)
我为您提供了一个概念,但是您需要在程序中添加一些部分。看一下readinessProbe
。
readinessProbe
:指示容器是否准备好处理请求。如果就绪探针失败,则端点控制器将从与Pod匹配的所有服务的端点中删除Pod的IP地址。初始延迟之前的默认就绪状态为Failure
。如果容器未提供就绪探测器,则默认状态为Success
。
这是配置示例,您也可以使用TCP套接字
readinessProbe:
httpGet:
path: /healthz
port: 8181
initialDelaySeconds: 5
periodSeconds: 5
GC启动后,您将停止通过路径/healthz
进行响应,并且kubelet将豆荚标记为不健康,然后等到它再次恢复健康为止,在您的情况下,这将是GC完成的时间。