ReplicaSet控制器

和手动创建的自主式Pod相比,ReplicaSet有以下特点:

  • 确保对象的数量精确反映期望值:ReplicaSet为精确控制Pod对象的数量,符合用户定义的值。
  • 确保Pod健康运行:一旦探测到Pod故障,则自动补足
  • 弹性伸缩:存在业务规模变动时,可以手动调整Pod资源对象数量,必要时还可以通过HPA实现自动伸缩

创建ReplicaSet

和创建Pod类似,可以使用yaml或json格式的清单文件定义配置。由kind、apiVersion、metadata、spec和status这5个一级字段,下面是spec字段的常用子字段:

  • replicas < integer >:期望的Pod对象副本数量
  • selector < Object >:当前控制器匹配Pod对象使用的标签选择器,支持matchLabels和matchExpressions两种
  • template < Object >:补足Pod副本数量时使用的Pod模板
  • minReadySeconds < integer >:新建Pod对象,指定时间内未发生故障,即视为就绪,默认为0。

上一节的示例即为ReplicaSet的yaml文件,使用kubectl apply命令即可创建。
一. 缺少Pod副本时,ReplicaSet会自动补足。包括删除、故障、变更标签等。ReplicaSet确定副本数量的依据是标签选择器匹配到的Pod数量。
二. 多出的Pod副本会被删除

更新ReplicaSet

一般来说更新主要针对的是replicas和template两个字段,对replicas的变动即意味着扩容或缩容。对template的修改不会对已创建的Pod产生影响,但新建Pod会使用新的模版,通过关闭旧版Pod可以实现滚动更新的效果。
一. 变更镜像,直接修改对应yaml文件image字段,然后使用kubectl applykubectl replace命令即可完成更新。此时Pod不会被更新,直到数量发生变化。(理解即可,Deployment控制器可以实现更高级的功能,大多数情况我们无需手动控制)
二. 扩容和缩容,除了直接修改yaml文件,kubernetes提供了一个专属命令用来扩容和缩容。如kubectl scale replicasets rs-demo --replicas=5可以将Pod副本数量调整为5,扩缩容方式相同,我们只需指定副本数量即可。此外--current-replicas表示当前副本为多少时执行扩缩容。

可以使用kubectl edit命令直接编辑相关资源


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!