kubernetes之ReplicationController与ReplicaSet

kubernetes之ReplicationController与ReplicaSet

ReplicationController组成部分

一个ReplicationController 有三个主要部分组成:

  • label selector(标签选择器):用于确定ReplicationController作用域中有哪些pod
  • replica count(副本个数):指定应运行的pod数量。
  • pod template(pod模板):用于创建新的pod副本。

上面三个部分都可以随时修改,其中replica count即副本个数变更会影响现有的pod。更改标签选择器
会使现有的pod脱离ReplicationController的范围,因此控制器会停止关注它们。

使用ReplicationController的好处

  • 确保一个pod或多个pod副本持续运行,方法是在现在pod丢失时启动一个新pod
  • 集群节点发生故障时,它将为故障节点上运行的所有pod(即受ReplicationController控制的节点上的pod)创建替代副本。
  • 它能轻松实现pod的水平伸缩。

编辑ReplicationController

查看拥有的rc:kubectl get rc

编辑rc:kubectl edit re kubia

删除ReplicationController并保持pod正常运行

当使用 kubectl delete删除ReplicationController时,可以通过给命令增加--cascade=false选项来保持pod运行。
即:kubectl delete rc kubia --cascade=false

使用ReplicaSet而不是ReplicationController

ReplicaSet是新一代的ReplicationController,并且将旧的完全替换掉,即ReplicationController最终将被弃用。
也就是说我们应该创建ReplicaSet而不是ReplicationController,它们几乎完全相同,所以不会有什么学习成本。

ReplicaSet的优点是什么?
pod选择器的表达能力更强。举个例子,单个ReplicationController无法将pod与标签env=aenv=b同时匹配,它只能匹配带
env=a标签或env=b标签的pod。但ReplicaSet可以匹配两组pod并将它们视为一个大组。
可以通过matchExpressions属性来重写选择器,如部分示例:

selector:
  matchExpressions:
    - key: app # 此选择器要求该pod包含名为app的标签
      operator: In
      values:
        - dev # 标签值必是values值:即dev

如上示例,每个表达式都必须包含一个key,一个operator(运算符),并且可能还有一个values的列表(取决于运行符)。
有效的运行符:

  • InLabel的值必须与其中一个指定的values匹配。
  • NotInLabel的值与任何指定的values不匹配。
  • Existspod必须包含一个指定名称的标签,值不重要,使用此运算符时,不应指定values字段。
  • DoesNotExistpod不得包含有指定名称的标签。values属性不得指定。

要注意的是,如果指定了多个表达式,则所有这些表达式都必须为true才能使选择器与pod匹配。如果同时指定matchLabelsmatchExpressions
则所有标签都必须匹配,并且所有表达必须计算为true,才能使该pod与选择器匹配。

如何定义ReplicaSet?
一样是创建yaml文件,不过要注意的是ReplicaSet不是V1 API的一部分,但属于apps API组的v1beta2版本。因此你需要确保在
创建资源时指定正确的apiVersion。除kind需要由ReplicationController改成ReplicaSet,其它的内容与创建ReplicationController大致相同。

值得注意的是ReplicaSet缩写是rs。可能通过kubectl get rs来查看ReplicaSet

参考书籍:《Kubernetes in action》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值