StatefulSet

发布时间 2023-07-16 10:10:21作者: 王景迁

有状态应用

实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,就被称为“有状态应用”。

Pod管理策略

通过.spec.podManagementPolicy 字段来管理 Pod。
OrderedReady:严格遵循 Pod 顺序来启停,默认设置。
Parallel:告诉 StatefulSet 控制器并行启动或终止所有 Pod,并且在启动或终止另一个 Pod 之前不等待前一个 Pod 变为Running and Ready 或完全终止。

更新策略

OnDelete:用户必须手动删除Pod,以使控制器创建新的Pod。
RollingUpdate:如果.spec.updateStrategy未指定,则此为默认策略。
StatefulSet控制器将删除并重新创建StatefulSet中的每个Pod。它将以Pod终止(从最大序数到最小序数)的顺序进行,一次更新每个Pod。在更新下一个Pod之前,必须等待这个Pod Running and Ready。
Partitions:通过指定 .spec.updateStrategy.rollingUpdate.partition 来对 RollingUpdate 更新策略进行分区,如果指定了分区,则当 StatefulSet 的 .spec.template 更新时,具有大于或等于分区序数的所有 Pod 将被更新。
具有小于分区的序数的所有 Pod 将不会被更新,即使删除它们也将被重新创建。如果 StatefulSet 的 .spec.updateStrategy.rollingUpdate.partition 大于其 .spec.replicas,则其 .spec.template 的更新将不会传播到 Pod。在大多数情况下,不需要使用分区。

不会触发滚动更新的情况

修改更新策略。
删除首Pod。