Files
notes_estom/kubenets/04-4.StatefulSet.md
yinkanglong 37b228c3c2 博客系统
2024-01-07 21:39:29 +08:00

28 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
在 Kubernetes 1.7 及之后的版本中,可以为 StatefulSet 设定 .spec.updateStrategy 字段,以便您可以在改变 StatefulSet 中 Pod 的某些字段时container/labels/resource request/resource limit/annotation等禁用滚动更新。
On Delete
OnDelete 策略实现了 StatefulSet 的遗留版本kuberentes 1.6及以前的版本)的行为。如果 StatefulSet 的 .spec.updateStrategy.type 字段被设置为 OnDelete当您修改 .spec.template 的内容时StatefulSet Controller 将不会自动更新其 Pod。您必须手工删除 Pod此时 StatefulSet Controller 在重新创建 Pod 时,使用修改过的 .spec.template 的内容创建新 Pod。
Rolling Updates
.spec.updateStrategy.type 字段的默认值是 RollingUpdate该策略为 StatefulSet 实现了 Pod 的自动滚动更新。在用户更新 StatefulSet 的 .spec.tempalte 字段时StatefulSet Controller 将自动地删除并重建 StatefulSet 中的每一个 Pod。处理顺序如下
从序号最大的 Pod 开始,逐个删除和更新每一个 Pod直到序号最小的 Pod 被更新
当正在更新的 Pod 达到了 Running 和 Ready 的状态之后,才继续更新其前序 Pod
Partitions
通过指定 .spec.updateStrategy.rollingUpdate.partition 字段可以分片partitioned执行RollingUpdate 更新策略。当更新 StatefulSet 的 .spec.template 时:
序号大于或等于 .spec.updateStrategy.rollingUpdate.partition 的 Pod 将被删除重建
序号小于 .spec.updateStrategy.rollingUpdate.partition 的 Pod 将不会更新,及时手工删除该 Podkubernetes 也会使用前一个版本的 .spec.template 重建该 Pod
如果 .spec.updateStrategy.rollingUpdate.partition 大于 .spec.replicas更新 .spec.tempalte 将不会影响到任何 Pod
TIP
大部分情况下,您不需要使用 .spec.updateStrategy.rollingUpdate.partition除非您碰到如下场景
执行预发布
执行金丝雀更新
执行按阶段的更新