3个pod在ReplicationController 'rc 1'下运行,然后我只删除了rc 1(而不是pds),并使用相同的标签选择器rc 1创建了一个新的ReplicaSet 'rs 1'。因此,正如预期的那样,rs 1匹配创建的现有pod,而不是rc 1。
过了一段时间,我用与rc 1相同的清单文件创建了复制控制器rc 2。现在,rc 1启动了新的pod,而不是引用具有相同标签的pod。
所以我想知道一个pod是否可以在两个不同的副本集/副本控制器下起作用?
3个pod在ReplicationController 'rc 1'下运行,然后我只删除了rc 1(而不是pds),并使用相同的标签选择器rc 1创建了一个新的ReplicaSet 'rs 1'。因此,正如预期的那样,rs 1匹配创建的现有pod,而不是rc 1。
过了一段时间,我用与rc 1相同的清单文件创建了复制控制器rc 2。现在,rc 1启动了新的pod,而不是引用具有相同标签的pod。
所以我想知道一个pod是否可以在两个不同的副本集/副本控制器下起作用?
2条答案
按热度按时间5us2dqdw1#
所以我想知道一个pod是否可以在两个不同的副本集/副本控制器下起作用?
ReplicaSet与其Pod的链接是通过Pod的metadata.ownerReferences字段,该字段指定当前对象所拥有的资源。ReplicaSet获取的所有Pod都在其ownerReferences字段中具有其所属的ReplicaSet的标识信息。通过此链接,ReplicaSet知道它正在维护的Pod的状态并相应地进行计划。
ReplicaSet通过其selector来识别新的Pod。如果有一个Pod没有OwnerReference或者OwnerReference不是Controller,并且它匹配一个ReplicaSet的selector,那么它将立即被该ReplicaSet获取。这在official documentation中解释得很好(有例子)。
过了一段时间,我用与rc 1相同的清单文件创建了复制控制器rc 2。现在,rc 1启动了新的pod,而不是引用具有相同标签的pod。
请注意,配置
ReplicaSet
的Deployment
现在是设置复制的推荐方式。ReplicationController确保在任何时候运行指定数量的pod副本。换句话说,ReplicationController确保pod或一组同类pod始终处于可用状态。
如果pod太多,ReplicationController会终止多余的pod。如果太少,ReplicationController会启动更多的pod。与手动创建的pod不同,ReplicationController维护的pod在失败、删除或终止时会自动替换。
希望能帮上忙。
mo49yndu2#
官方文件说,这是不可取的,有多个控制器具有相同的选择器。
那你就得自己删除这些豆荚了
如果你最终得到了多个控制器,它们有重叠的选择器,你将不得不自己管理删除。