问题描述
缩小 Kubernetes pod 并不能优雅地关闭 Vertx 应用程序(用 Java 开发)。它基本上杀死了容器。
覆盖 io.vertx.core.Launcher 类的 beforeStoppingVertx 和 afterStoppingVertx 方法并打印一些日志以验证 Vertx 是否正常关闭。 当 pod 缩小时,beforeStoppingVertx 和 afterStoppingVertx 方法永远不会被调用。
@Override
public void beforeStoppingVertx(Vertx vertx) {
LOG.info("Vertx Closing Gracefully");
vertx.close();
}
@Override
public void afterStoppingVertx() {
LOG.info("Vertx Closed Gracefully");
}
尝试将 60 秒的宽限期添加到部署 yml 中,这是通用模板,但仍然没有用(即使在 60 秒后也未调用 beforeStoppingVertx 和 afterStoppingVertx 方法)
我怀疑 vert.x 永远不会被告知关闭。或者它没有收到消息。 我们确实可以选择在 Kubernetes 中定义 Pre Stop 钩子, https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination
问题是实际脚本是什么,我们需要作为 Pre-stop 钩子的一部分提及,它会指示 Vert.x 正常关闭?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)