我的开发环境和 CI 上的 StatefulSet 更新有一个简单的问题。
我想在不先使用 Kubectl delete 的情况下立即替换所有 StatefulSet 副本。是否可以将清单更改为策略:替换为 Deployments 并继续使用 kubectl apply ...
我的开发环境和 CI 上的 StatefulSet 更新有一个简单的问题。
我想在不先使用 Kubectl delete 的情况下立即替换所有 StatefulSet 副本。是否可以将清单更改为策略:替换为 Deployments 并继续使用 kubectl apply ...
目前StatefulSets只支持两种更新策略:
RollingUpdate
:RollingUpdate
更新策略为 StatefulSet 中的 Pod 实现自动滚动更新。.spec.updateStrategy
当未指定时,它是默认策略。当 StatefulSet.spec.updateStrategy.type
设置为RollingUpdate
时,StatefulSet 控制器将删除并重新创建 StatefulSet 中的每个 Pod。它将按照与 Pod 终止相同的顺序(从最大的序数到最小的序数)进行,一次更新每个 Pod。在更新其前身之前,它将等到更新的 Pod 正在运行并准备就绪。
OnDelete
:OnDelete
更新策略实现了旧版(1.6 和更早版本)行为。当 StatefulSet.spec.updateStrategy.type
设置为OnDelete
时,StatefulSet 控制器不会自动更新 StatefulSet 中的 Pod。用户必须手动删除 Pod 以使控制器创建反映对 StatefulSet 所做修改的新 Pod .spec.template
。
但是,有计划对StatefulSet 实施 MaxUnavailable 滚动更新。它将允许您根据maxUnavailble
策略一起更新 X 个副本。它导致了这个更新提案,但还没有完成,从最新的评论来看,它应该被设置为 Kubernetes 1.20 的里程碑。