在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.
任何解释或参考将不胜感激。感谢。
答案 0 :(得分:1)
Kubernetes docs说明重叠选择器(来自其他pod,复制控制器或作业)的以下内容:
此外,您通常不应创建任何标签与此选择器匹配的pod,可以直接与另一个ReplicationController或其他控制器(如Job)匹配。如果这样做,ReplicationController会认为它创建了其他pod。 Kubernetes并没有阻止你这样做。 如果最终有多个具有重叠选择器的控制器,则必须自己管理删除
在docs about Deployments中还有另一个声明证实了上述内容:
如果您有多个具有重叠选择器的控制器,控制器将互相争斗并且行为不正确。
因此,总之,您应该尽量避免重复控制器,副本集(我建议您使用而不是复制控制器的下一代复制控制器)和部署重叠选择器,因为它可能会导致严重的问题正如此issue所证实的那样。