Kubernetes Deployment 标签不唯一会造成什么后果?

Kubernetes Deployment 标签不唯一会造成什么后果?

文档中.spec.selector说:

.spec.selector字段定义 Deployment 如何找到要管理的 Pod。在本例中,您选择在 Pod 模板中定义的标签 ( app: nginx)。但是,只要 Pod 模板本身满足规则,就可以使用更复杂的选择规则。

但是,如果多个 Deployment 创建了共享相同标签的 Pod,会发生什么情况?也就是说,如果我有:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: app
  name: app1
spec:
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    ...
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: app
  name: app2
spec:
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    ...

这有什么实际影响?有了上述配置,一切似乎kubectl scale --replicas=<n> app1都正常工作,因此不会混淆哪些 pod 由哪些部署管理。

我注意到的唯一实际影响是,尝试按部署名称(如kubectl logs deploy/app1)定位 pod 将会根据上述配置选择错误的 pod。

这是唯一的问题吗?我之所以问这个问题,是因为我注意到我们有几个地方都遇到了这种情况,我想判断问题的严重性。

(我意识到,使用标签相同的豆荚可能会导致其他问题 — — 例如,Service实际上可能会将流量引导到错误的 pod — — 但我感兴趣的是这会以何种方式导致问题,特别是部署及其对 pod 的管理。)

相关内容