matchLabels

**在 Kubernetes 中,matchLabels 中的多个 key: value 条件必须 全部满足(即 逻辑与 AND)才能匹配资源。


举个例子:

1
2
3
4
selector:
matchLabels:
app: nginx
tier: frontend

这个 selector 会选中具有以下标签的 Pod 或其他资源:

1
2
3
4
metadata:
labels:
app: nginx
tier: frontend

如果某个 Pod 缺少其中任何一个标签(比如只有 app: nginx 没有 tier: frontend),就不会被选中


小结:

  • matchLabels 是一个 key-value map所有的键值对都必须匹配(逻辑 AND)。
  • 想要更复杂的匹配逻辑(如 OR、NOT),可以使用 matchExpressions

如需实现更灵活的选择条件,可以这样写:

1
2
3
4
5
6
7
8
selector:
matchExpressions:
- key: app
operator: In
values: ["nginx", "httpd"]
- key: tier
operator: NotIn
values: ["backend"]

这个例子表示:

  • appnginxhttpd
  • 并且 tier 不是 backend