【发布时间】:2020-08-11 03:49:58
【问题描述】:
总结
我可以为部署提供部署策略 Recreate 并为部署设置固定的 maxSurge 吗?
更多详情
我正在开发一个在 Kubernetes 中运行的应用程序。后端将有多个副本,并通过数据库迁移运行 EF Core。我知道有几种方法可以解决这个问题;这是我目前的想法。
在新版本中,我希望停止所有副本。然后一次应该启动一个副本,并且对于每个副本应该有一个运行迁移的 init 容器(如果需要)。
这似乎是可能的,使用以下两个配置值:
-
.spec.strategy.type==Recreate和 .spec.strategy.rollingUpdate.maxSurge==1
这两个可以一起用吗?如果没有,有什么方法可以控制一个控制器使用Recreate 策略一次启动多少个副本?
“不!你应该以完全不同的方式来做这件事!”
如果您认为我是从完全错误的角度出发,也请随意提出其他方法。
【问题讨论】:
-
你是怎么解决这个问题的?
-
@LeonG 我从部署更改为有状态集。我给了它
updateStrategy.type: OnDelete。然后,作为发布管道的一部分,我运行一个命令,手动删除有状态集中的所有 pod。结果是 Kubernetes(在删除所有 Pod 之后)一次重新创建一个 Pod,直到满足副本数。缺点是 每个 副本运行迁移,而实际上只有第一个副本需要。但我认为这是可以接受的。 -
感谢更新,我最终选择了 Kubernetes 中由 Helm 钩子触发的作业,并使用额外的参数调用应用程序容器来运行迁移并退出。与初始化容器相比,作业只运行一次,而不是每个配置的副本。
标签: kubernetes kubernetes-deployment