Kubernetes 控制器 - ReplicaSet

Table of Contents

ReplicaSet(后面简称RS) 是为了维护一组 Pod 副本的运行,作用就是保证这些 Pod 在集群中正常运行。

1 工作原理

RS 使用字段定义,主要包括:

  • 选择器(selector):来识别它可以获取的 Pods
  • 副本数量(replica):表示维护的 Pod 数量
  • Pod 模板(template):表示创建 Pod 时所需要的信息

RS 通过创建、删除 Pod 的方式来达到副本的期望(desired)数量,当它需要创建新的 Pod 时,会使用上面的 Pod 模板。

RS 使用 Pod 的 metadata.ownerReferences 字段来与 Pod 之间建立连接(Pod 和 RS 的从属关系),指定当前对象所拥有的资源。 使用 RS 创建的 Pods 都在 metadata.ownerReferences 中添加的自己的标识信息。

RS 通过选择器来标识新的 Pods。如果一个 Pod 没有 OwnerReferences 或者 OwnerReference 不是 Controller,并且和 RS 的选择器相匹配,那么 RS 会立即获取它。

2 何时使用

Deployment 相比 RS 是更高级的抽象来管理 ReplicaSets 和提供声明式的更新和其它有用的功能。因为,建议使用 Deployments 而不直接使用 ReplicaSets,除非你需要自定义更新编排或者完全不需要更新。

也就是说你永远不需要直接操作 RS 对象,而是通过修改 Deployment 中的 spec 部分来定义你的应用程序。

注意:

  • 你可以直接创建 Pod,但是建议创建 Pod 时确保标签不要与已存在的 ReplicaSets 标签相同,否则会被 RS 获取到,然后被终止 (因为 Pod 数量超过了 RS 所要求的数量)。

    如果你是先创建 Pod,然后创建 RS,那么 RS 会把该 Pod 作为 RS 的一部分,自己创建的 Pod 的数量将比实际的要少一个。

3 书写 ReplicaSet 清单

First created: 2020-04-06 11:51:03
Last updated: 2020-04-13 Mon 10:35
Power by Emacs 26.3 (Org mode 9.3.6)