statefulSet 有状态应用
部署有状态应用
解决pod的生命周期性 保持pod启动顺序和唯一性
1. 稳定 唯一的网络标识符 持久储存
2. 有序 优雅的部署和扩展 删除和终止
3. 有序滚动更新
应用场景: 数据库 分布式应用 (mysql zk etcd)
稳定的网络ID:
多一个serviceName"nginx"字段就是告诉statefulset控制器使用nginx这个headkess service来保证POd身份
分布式应用都有有一个拓扑关系
为每一个 pod分配一个固定的dns名称
稳定的数据存储
StatefulSet的存储卷使用VolumeClaimTemplate创建,
称为卷申请模板,当StatefulSet使用VolumeClaimTemplate
创建一个PersistentVolume时,同样也会为每个Pod分配
并创建一个编号的PVC
pod和pvc是一一对应
statefulSet 与 deployment是有区别的 statefulSet是有身份的
身份三要素
1. 域名 (dns)
2. 主机名 (容器主机名)
3. 存储(pvc)
https://github.com/lizhenliang/etcd-statefulset
k8s特点:
快速部署 快速扩容