Kubernetes StatefulSets

系列文章目录

Kubernetes StatefulSets


前言

StatefulSets, PetSets, Deployment

StatefulSets(有状态系统服务设计)在Kubernetes 1.7中还是beta特性,同时StatefulSets是1.4 版本中PetSets的替代品。

一、什么情况使用StatefulSets

1. 稳定且唯一的网络标识符

如: Redis集群, 在Redis集群中,它是通过槽位来存储数据的,假如:第一个节点是01000,第二个节点是10012000,第三个节点2001~3000…等等,这就使得Redis集群中每个节点要通过ID来标识自己,如: 第二个节点宕机了,重建后它必须还叫第二个节点,或者说第二个节点叫R2,它必须还叫R2,这样在获取1001~2000槽位的数据时,才能找到数据,否则Redis集群将无法找到这段数据。

2. 稳定且持久的存储

3. 有序、平滑的部署和扩展

如 MySQL集群,要先启动主节点, 若从节点没有要求,则可一起启动,若从节点有启动顺序要求,可先启动第一个从节点,接着第二从节点等;这个过程就是有顺序,平滑安全的启动。

4. 有序的删除和终止

我们先终止从节点,若从节点是有启动顺序的,那么关闭时,也要按照逆序终止,即启动时是从S1~S4以此启动,则关闭时,则是先关闭S4,然后时S3,依次关闭,最后在关闭主节点。

5. 有序的滚动更新

如: MySQL在更新时,应该先更新从节点,全部的从节点都更新完了,最后在更新主节点,因为新版本一般可兼容老版本,但是一定要注意,若新版本不兼容老版本就很很麻烦

二、部署&扩展

  • 对于具有N个副本的StatefulSet,当部署Pod时,将会顺序从{0…N-1}开始创建。
    Pods被删除时,会从{N-1…0}的相反顺序终止。 在将缩放操作应用于Pod之前,它的所有前辈必须运行和就绪。
    对Pod执行扩展操作时,前面的Pod必须都处于Running和Ready状态。 在Pod终止之前,所有successors都须完全关闭。

三、发布流程

RollingUpdate模式:该模式的默认行为是从标号为N的pod滚动更新到标号为0的pod,直到所有的pod都被更新为新版本。例如:当前集群共有9个pod,设置partition为5,则当sts中pod模板发生变更时,从标号为8的pod开始自动更新,待更新到标号为4的pod时停止更新(4号pod未更新);

OnDelete模式:该模式和RollingUpdate模式最大的区别在于OnDelete不会在sts中pod模板发生变更时自动触发更新,只有等到用户主动删除pod后拉起新pod时才会更新该pod的信息;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值