# StatefulSet 创建 Pod 的流程

StatefulSet 管理的 Pod 部署和扩展规则如下：

* **对于一个拥有 n 个副本的 StatefulSet，Pod 被部署时是按照&#x20;**<mark style="color:blue;">**{0 .. n-1}**</mark>**&#x20;的序号顺序创建的**。
* **当删除 Pod 时，将按照&#x20;**<mark style="color:blue;">**n‒1 到 0**</mark>**&#x20;的反顺序终止。**
* 在缩放 Pod 之前，必须保证当前的 Pod 是 Running（运行中）或者 Ready（就绪）。
* 在终止 Pod 之前，它所有的继任者必须是完全关闭状态。

{% hint style="warning" %}
## <mark style="color:orange;">注意</mark>

**StatefulSet 的 pod.Spec.TerminationGracePeriodSeconds（终止 Pod 的等待时间）不应该指定为 0**，设置为 0 对 StatefulSet 的 Pod 是极其不安全的做法，优雅地删除 StatefulSet 的Pod 是非常有必要的，而且是安全的，因为它可以确保在 Kubelet 从 APIServer 删除之前，让 Pod 正常关闭。
{% endhint %}
