k8s StatefulSet 相关文档

解决问题

Kafka和zookeeper是在两种典型的有状态的集群服务。首先kafka和zookeeper都需要存储盘来保存有状态信息,其次kafka和zookeeper每一个实例都需要有对应的实例Id (Kafka需要broker.id,zookeeper需要my.id)来作为集群内部每个成员的标识,集群内节点之间进行内部通信时需要用到这些标识。

对于这类服务的部署,需要解决两个大的问题,一个是状态保存,另一个是集群管理(多服务实例管理)。

kubernetes中提的 StatefulSet 方便了有状态集群服务在上的部署和管理。具体来说是通过 Init Container来做集群的初始化工作,用 Headless Service 来维持集群成员的稳定关系,用 Persistent Volume 和 Persistent Volume Claim提供网络存储来持久化数据,从而支持有状态集群服务的部署。

关于 StatefulSet

Statefulset的启停顺序

StatefulSet使用场景