有状态的pod (statfulset )

有状态pod部署

    statefulset保证了pod在重新调度后保留他们的标识和状态,statefulset创建的每个副本并不完全一样,每个pod都可以拥有一组独立的数据卷(持久化状态)、pod名字都是有规律的(固定的)。
稳定的网络标识
    statefulset创建的每个pod都一个从零开始的顺序索引,这个会体现在pod的主机名和pod对应的固定存储上,这些名称都是可预知的。因为它是由statefulset的名称加该实例的顺序索引值组成的。

扩缩容:
    扩缩容在statefulset(有状态)pod 中也是可以预知的,扩容按照现有索引递增,缩容默认是从最高索引递减。但在有实例不健康的状态下不允许缩容操作。

持久卷:
    有状态的pod存储必须是持久的,并且与pod解耦。
重新挂载持久卷声明到相同pod的新实例上:
    缩容时statefulset会保留持久卷声明,新的pod实例会使用绑定在持久卷上相同的声明和骑上的数据。当误操作缩容一个statefulset后,可以做一次扩容来恢复。新的pod实例会运行到与之前完全一致的状态(名字也一样)
    一个statefulset必须在准确的确认一个pod不在运行后才会去创建它的替换。(最多一个原则)
 

你可能感兴趣的:(k8s)