Kubernetes Replica Sets 和 Kubernetes Replica Controller的区别

ReplicaSet(RS)是Replication Controller(RC)的升级版本。ReplicaSet 和  Replication Controller之间的唯一区别是对选择器的支持。ReplicaSet支持labels user guide中描述的set-based选择器要求, 而Replication Controller仅支持equality-based的选择器要求。

标签选择器用来选择包含特定标签的pod或其他对象的子集,并对这些对象执行操作。标签选择器是根据对象是否包含带有特定值的特定标签键来过滤对象的标准。

标签选择器有两种类型:

  • 基于相等(equality-based)的选择器
  • 基于集合(set-based)的选择器。

基于相等选择器简介

基于相等的选择器可以根据特定标签的值是否等于特定值来筛选对象。例如,将标签选择器app=quote应用到前面示例中的所有pod,将选择所有quote pod(所有稳定版本实例加上canary实例),如下图所示。

 

图10.7 使用基于相等的选择器选择对象

同样,标签选择器app!=quote选择所有pod,除了quote pod。

基于集合的选择器简介

基于集合的选择器更强大,允许指定:

  • 特定标签必须具有的一组值;例如:app in (quiz, quote),
  • 一组特定标签不能具有的值;例如:app notin (kiada),
  • 一个特定的标签键,应该出现在对象的标签中;例如,要选择带有app标签的对象,选择器就是app,
  • 一个不应该出现在对象标签中的特定标签键;例如,要选择没有app标签的对象,选择器是!app。

结合多个选择器

当筛选对象时,可以组合多个选择器。要被选择,对象必须匹配所有指定的选择器。如下图所示,选择器app=quote,rel=canary选择pod quote-canary。

 

图10.8 结合两个标签选择器

在使用kubectl管理对象时使用标签选择器,但当一个对象引用其他对象的子集时,Kubernetes也会在内部使用标签选择器。下面两部分将介绍这些场景。

如何使用ReplicaSet

大多数kubectl 支持Replication Controller 命令的也支持ReplicaSets。rolling-update命令除外,如果要使用rolling-update,请使用Deployments来实现。

虽然ReplicaSets可以独立使用,但它主要被 Deployments用作pod 机制的创建、删除和更新。当使用Deployment时,你不必担心创建pod的ReplicaSets,因为可以通过Deployment实现管理ReplicaSets。

何时使用ReplicaSet

ReplicaSet能确保运行指定数量的pod。然而,Deployment 是一个更高层次的概念,它能管理ReplicaSets,并提供对pod的更新等功能。因此,我们建议你使用Deployment来管理ReplicaSets,除非你需要自定义更新编排。

这意味着你可能永远不需要操作ReplicaSet对象,而是使用Deployment替代管理 。

 

posted @ 2024-03-09 15:34  Mr.peter  阅读(16)  评论(0编辑  收藏  举报