如何避免flyway导致Spring Boot Application无法启动?

时间:2019-11-28 10:51:54

标签: spring-boot kubernetes flyway

我正在运行在Kubernetes上运行的Spring Boot应用程序,副本数为8。实施的部署策略为 RollingUpdate ,其中maxSurge = 50%,maxUnavailable =0。使用此设置,当我尝试进行新的部署,它将同时弹出4个Pod。

这些新部署实际上包含新的flyway脚本。根据我的观察,这四个豆荚之间发生了比赛情况。其中有4个将检查是否存在新的飞行通道,并尝试运行是否为新的飞行通道。显然,其中只有一个能够成功运行飞道,而其他三个将出错,因为第一个已经运行了飞道。这三个Pod将更新飞行路线架构的历史记录,以将状态设置为失败。这样,只能为新部署启动一个pod。

  1. 如何避免这种情况?我想到了在应用程序启动之前先运行flyway。但是我不知道该怎么办?创建一个仅用于运行flyway脚本的初始化容器听起来不是一个好选择,这可能会导致我遇到第二个问题。
  2. 可以说,准备就绪和活动检查的initialDelay时间不是很长,但是飞路迁移需要很长时间才能完成,最终应用程序没有足够的时间在给定的initialDelay时间内启动。除了给它更多的CPU或增加initialDelay之外,我们如何避免这种情况发生?或者有什么更好的方法来避免这种情况发生?

0 个答案:

没有答案