一、认识StatefulSet控制器
简单来说,StatefulSet控制器能够记录有状态应用的拓扑及状态,并能够在控制循环监控到某Pod的"实际状态"与用户的"期望状态"不一致时,严格按照Pod自身的程序状态属性将其予以恢复,StatefulSet(有状态副本集)能够保证由其管控的每个Pod对象都有着固定的主机名和专有存储卷,即便被重构后亦能保持不变。
应用程序与用户、设备其他应用程序或外部组件进行通信时,根据其是否需要记录前一次或多次通信中的相关事件信息以作为下一次通信的分类标准,可以将那些需要记录信息的应用程序称为有状态(stateful)应用,而无须记录的则称为无状态(stateless)应用。
状态是进程的时间属性。无状态意味着一个进程不必跟踪过去的交互操作,本质上可以说它是一个纯粹的功能性行为。对应的,有状态则意味着进程存储了以前交互过程的记录,并且可以基于它对新的请求进行响应。至于状态信息被保存在内存中,或者持久保存于磁盘上,则是另外一个问题。
存储是表述持久保存数据的方法,现今通常是指机械磁盘或SSD设备,若进程仅需要操作内存中的数据,则表示其无须进行磁盘的I/O操作;如果产生了I/O操作,则通常意味着数据的只读访问或读写访问。
StatefulSet是Pod资源控制器的一种实现,用于部署和扩展有状态应用的Pod资源,确保它们的运行顺序及每个Pod资源的唯一性。其与ReplicaSet控制器不同的是,虽然所有的Pod对象都基于同一个spec配置所创建,但是StatefulSet需要为每个Pod维持一个唯一且固定的标识符,必要时还要为其创建专有的存储卷。StatefulSet主要适用于那些依赖下列类型资源的应用程序:
1)稳定且唯一的网络标识符
2)稳定且持久的存储
3)有序、优雅地部署和扩展
4)有序、优雅地删除和终止
5)有序而自动地滚动更新
Kubernetes学习之StatefulSet控制器
最新推荐文章于 2025-04-08 15:12:17 发布