【问题标题】:Can a Pod be managed by two different ReplicaSets?一个 Pod 可以由两个不同的 ReplicaSet 管理吗?
【发布时间】:2019-12-16 21:05:12
【问题描述】:

3 个 pod 在 ReplicationController 'rc1' 下运行,然后我只删除了 rc1(不是 pds),并创建了一个新的 ReplicaSet 'rs1',其标签选择器与 rc1 相同。因此,正如预期的那样,rs1 与创建的现有 pod 匹配,但 rc1。

一段时间后,我使用与 rc1 相同的清单文件创建了 ReplicationController rc2。现在,rc1 会创建新的 pod,而不是引用具有相同标签的 pod。

所以我想知道一个 pod 是否可以在两个不同的 ReplicaSets/ReplicationsControllers 下作用域?

【问题讨论】:

    标签: kubernetes kubernetes-pod


    【解决方案1】:

    ReplicaSet 的目的是保持一组稳定的副本 Pod 在任何给定时间运行。因此,它通常用于保证指定数量的相同 Pod 的可用性。

    所以我想知道一个 pod 是否可以在两个不同的 ReplicaSets/ReplicationsControllers 下作用域?

    ReplicaSet 与其 Pod 的链接是通过 Pod 的 metadata.ownerReferences 字段,它指定当前对象所拥有的资源。 ReplicaSet 获取的所有 Pod 在其 ownerReferences 字段中都有其拥有的 ReplicaSet 的标识信息。正是通过这个链接,ReplicaSet 才知道它正在维护的 Pod 的状态并做出相应的计划。

    ReplicaSet 使用其选择器标识要获取的新 Pod。如果有一个 Pod 没有 OwnerReference 或者 OwnerReference 不是Controller 并且它匹配到一个 ReplicaSet 的选择器,它将立即被该 ReplicaSet 获取。 official documentation 中很好地解释了这一点(带有示例)。

    一段时间后,我使用与 rc1 相同的清单文件创建了 ReplicationController rc2。现在,rc1 会创建新的 pod,而不是引用具有相同标签的 pod。

    请注意,配置ReplicaSetDeployment 现在是推荐的方式来设置复制。

    ReplicationController 确保指定数量的 pod 副本在任何时候都在运行。换句话说,ReplicationController 确保一个 pod 或一组同类 pod 始终处于启动状态且可用。

    如果 pod 太多,ReplicationController 会终止多余的 pod。如果太少,ReplicationController 会启动更多的 pod。与手动创建的 pod 不同,由 ReplicationController 维护的 pod 在失败、删除或终止时会自动替换。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2019-12-26
      相关资源
      最近更新 更多