StatefulSets在v1.5时还是个beta特性,它取代了v1.4的PetSets特性。PetSets的用户可以参考v1.5的升级指导,将正在运行的PeetSets升级到StatefulSets。
StatefulSet是一个给Pod提供唯一标志的控制器,它可以保证部署和扩展的顺序。
使用StatefulSet
当应用有以下任意要求时,StatefulSet的价值就体现出来了。
● 稳定的、唯一的网络标识。
● 稳定的、持久化的存储。
● 有序的、优雅的部署和扩展。
● 有序的、优雅的删除和停止。
上面提到的点中,在Pod调度时,稳定性和持久化是同一个意思。如果一个应用不需要任何稳定的标识或顺序的部署、删除和扩展,那么你应该使用提供无状态备份的控制器来部署你的应用。诸如Deployment或者ReplicaSet可能更适合你的无状态服务需求。
限制
● StatefulSet还是beta版本,Kubernetes v1.5之前不可用。
● 和所有的alpha/beta资源一样,可以将--runtime-config选项传递给apiserver,来禁止StatefulSet。
● 给定Pod的存储必须是:基于请求存储等级(Storage Class)的PersistentVolume Provisioner,或者是由管理员预先配置。
● 删除和(或)减少StatefulSet副本,不会删除StatefulSet相关的卷。这样做是为了保证数据安全,比自动的清除StatefulSet相关资源更有价值。
● 当前StatefulSet需要Headless服务来负责Pod的网络一致性。你需要创建该服务。
● 当前,