【问题标题】:Kubernetes deployment with Recreate strategy and maxSurge?使用 Recreate 策略和 maxSurge 部署 Kubernetes?
【发布时间】: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


【解决方案1】:

Statefulset 在这种情况下可能会对您有所帮助。

StatefulSets are valuable for applications that require one or more of the following.
  • 稳定、唯一的网络标识符。
  • 稳定、持久的存储。
  • 有序、优雅的部署和扩展。
  • 有序的自动滚动更新。

【讨论】:

  • 我试试看!
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2019-01-29
  • 1970-01-01
  • 2019-12-20
  • 2010-12-01
  • 2021-08-08
  • 1970-01-01
  • 2014-11-23
相关资源
最近更新 更多