3

我的开发环境和 CI 上的 StatefulSet 更新有一个简单的问题。

我想在不先使用 Kubectl delete 的情况下立即替换所有 StatefulSet 副本。是否可以将清单更改为策略:替换为 Deployments 并继续使用 kubectl apply ...

4

1 回答 1

1

目前StatefulSets只支持两种更新策略

  • RollingUpdateRollingUpdate更新策略为 StatefulSet 中的 Pod 实现自动滚动更新。.spec.updateStrategy当未指定时,它是默认策略。当 StatefulSet.spec.updateStrategy.type设置为RollingUpdate时,StatefulSet 控制器将删除并重新创建 StatefulSet 中的每个 Pod。它将按照与 Pod 终止相同的顺序(从最大的序数到最小的序数)进行,一次更新每个 Pod。在更新其前身之前,它将等到更新的 Pod 正在运行并准备就绪。

  • OnDeleteOnDelete更新策略实现了旧版(1.6 和更早版本)行为。当 StatefulSet.spec.updateStrategy.type设置为OnDelete时,StatefulSet 控制器不会自动更新 StatefulSet 中的 Pod。用户必须手动删除 Pod 以使控制器创建反映对 StatefulSet 所做修改的新 Pod .spec.template

但是,有计划对StatefulSet 实施 MaxUnavailable 滚动更新。它将允许您根据maxUnavailble策略一起更新 X 个副本。它导致了这个更新提案,但还没有完成,从最新的评论来看,它应该被设置为 Kubernetes 1.20 的里程碑。

于 2020-10-29T09:11:52.177 回答