【十期/11章/02:47】
1、StatefulSet控制器概述
2、稳定的网络ID
3、稳定的存储
**
StatefulSet控制器
特点:
- 部署“有状态”应用
- 稳定的,唯一的网络标识
- 稳定的,持久的存储
- 有序的,优雅的部署和伸缩
- 有序的,优雅的删除和停止
- 有序的,自动的滚动更新
- 解决Pod独立生命周期,保持Pod启动顺序和唯一性
在前面知道使用Deployment创建的pod是无状态的,当挂载了Volume之后,如果该pod挂了,Replication Controller会再启动一个pod来保证可用性,但由于Pod是无状态的,pod挂了就会和之前的Volume的关系断开,新创建的Pod无法找到之前的Pod。但对于用户而言,对底层的Pod挂了是没有感知的,但当Pod挂了之后就无法使用之前挂载的存储卷。
为解决这一问题,就引入了StatefulSet用于保留Pod的状态信息。StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计)。
应用场景
1、稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现
2、稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(没有Cluster IP的Service)来实现
3、有序部署、有序扩展,Pod是有顺序的,在部署和扩展的时候要依据定义的顺序依次进行(从0到N-1,在下一个Pod运行之前所有之前的Pod必须是Running和Ready状态,基于init containers来实现)
4、有序收缩、有序删除
5、有序的滚动更新
稳定的网络ID
StatefulSet和Deployment的区别
“Statefulset用于部署有状态应用,Deployment用于部署无状态服务”
**