statefulset是用来管理有状态应用的工作负载api对象 和deployment不同的是,这些pod都有每个独立的粘性id,永久不变的id.
- 稳定的唯一标识的
- 稳定的、持久的存储
- 有序的,优雅的部署和缩放
- 有序的,自动的滚动更新。
需要一个svc
.. literalinclude:: ../../../scripts/statefulset/demo_svc.yml :language: yaml :linenos:
需要存储类
.. literalinclude:: ../../../scripts/statefulset/demo_storageclass.yml :language: yaml :linenos:
创建sts
.. literalinclude:: ../../../scripts/statefulset/demo_stateful.yml :language: yaml :linenos:
创建出来的pod名称是$(StatefulSet 名称)-$(序号),管理域的这个服务格式为:
pod对应的dns域为$(pod 名称).$(所属服务的 DNS 域名)
- 对于n个副本的sts,当部署pod的时候,依次创建的,顺序为0..N-1
- 删除pod的时候,它们是逆序终止的,顺序为 N-1..0。
- 在将缩放操作应用到 Pod 之前,它前面的所有 Pod 必须是 Running 和 Ready 状态。
- podManagementPolicy: OrderedReady 一个一个来,Parallel 并行的。