前言
Deployment 中可以随意的关闭和启动一个 Pod,Pod 之间的关系是平等的。
当 Pod 之间有主从关系,以及每个 Pod 对应特定的存储卷中的内容时,无法使用 Deployment 控制器来随意的操作 Pod。
我们需要使用一个叫做 StatefulSet 的控制器来处理这种有状态应用 Pod。
更新历史
- 20200605 - 初稿 - 左程立
- 原文地址 - https://blog.zuolinux.com/2020/06/05/about-controller-statefulset.html
StatefulSet 控制器工作原理
管理有状态应用 Pod 的秘诀是,提供稳定不变的 Pod 标识和稳定不变的存储。
稳定不变的拓扑状态,即不变的主机名
-
该标识和 Pod 是绑定的,不管 Pod 被调度到哪个节点上
-
StatefulSet 中每个 Pod 将被分配一个整数序号,从 0 到 N-1,该序号在 StatefulSet 上是唯一的
-
每个 Pod 根据 StatefulSet 的名称和 Pod 的序号派生出它的主机名。组合主机名的格式为 (