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