首页 > 解决方案 > StatefulSet 更新:重新创建 THEN 删除 pod

问题描述

Kubernetes StatefulSetRollingUpdate策略按顺序删除和重新创建每个 Pod。我有兴趣通过重新创建一个 pod然后逐个删除旧的 Pod(注意反转)来更新 StatefulSet。

这对我来说很有趣,因为:

  1. Ready Pod 的数量没有减少。我理解这也是正常部署更新的工作方式(即,仅在替换它的新 Pod 就绪后才删除 Pod)。
  2. 更重要的是,它允许我在 StatefulSet 升级期间执行特定于应用程序的实时迁移。我想将数据从终止之前“迁移”(old) pod-i到之前(我将在准备逻辑中实现这一点)。(new) pod-i(old) pod-i(new) pod-i

这样的更新策略可行吗?

标签: kuberneteskubernetes-statefulset

解决方案


这在 Deployment 中是可以实现的,但 StatefulSet 则不行。当您非常关心具有众所周知名称的副本的确切数量时,将使用 StatefulSet。部署用于更具弹性的工作负载。

您可以通过使用多个 StatefulSet 来实现您的目标——例如,使用 3 个 StatefulSet,每个有 1 个副本,而不是 3 个副本的 StatefulSet。然后在删除之前的一个之前为您的数据迁移部署一个额外的 StatefulSet。

或者,这可能是Operator管理应用程序的用例。


推荐阅读