如果多个ReplicaControllers有重叠的标签选择器,Kubernetes的行为是什么?

时间:2018-04-19 14:19:58

标签: kubernetes

在Kubernetes中,ReplicaController使用标签选择器来指定它将对哪个pod进行操作。

现在,我的问题是,如果多个ReplicaControllers有重叠的标签选择器,那么Kubernetes集群的行为是什么?或者它被认为是某种错误,应该避免?

例如,我有两个ReplicationControllers,如下所示。

rc1.yaml:

apiVersion: v1
kind: ReplicationController
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    app: frontend
    team: payment

rc2.yaml:

apiVersion: v1
kind: ReplicationController
metadata:
  name: backend
spec:
  replicas: 2
  selector:
    app: backend
    team: payment

你可以看到它们都有标签选择器team=payment,但是一个指定副本计数为3而另一个指定为2.

任何解释或参考将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

Kubernetes docs说明重叠选择器(来自其他pod,复制控制器或作业)的以下内容:

  

此外,您通常不应创建任何标签与此选择器匹配的pod,可以直接与另一个ReplicationController或其他控制器(如Job)匹配。如果这样做,ReplicationController会认为它创建了其他pod。 Kubernetes并没有阻止你这样做。   如果最终有多个具有重叠选择器的控制器,则必须自己管理删除

docs about Deployments中还有另一个声明证实了上述内容:

  

如果您有多个具有重叠选择器的控制器,控制器将互相争斗并且行为不正确。

因此,总之,您应该尽量避免重复控制器,副本集(我建议您使用而不是复制控制器的下一代复制控制器)和部署重叠选择器,因为它可能会导致严重的问题正如此issue所证实的那样。