Kubernetes 文档例子在这里显示如何将网络策略应用于由 Pod 选择器或命名空间选择器指定的源。我可以指定一个同时满足这两个约束的源吗?
例如源可以是部署在名称空间“ingress”中的带有标签“tier=web”的 Pod。
P.S.现在,我通过添加命名空间名称作为 pod 标签来使其工作。
是的,这是可能的,但不是立即直观的。如果你看一下下面的部分您链接的块,它给出了一个很好的解释(这似乎是在您提出问题后添加的)。网络策略 API 文档here一般来说也是有帮助的。
基本上,如果像示例一样将每个选择器作为列表中的两个单独的项目放置,则它使用的是逻辑 OR。如果将它们作为两个项目放在列表中的同一数组元素中(第二个项目前面没有破折号),如下面的示例所示,对 podSelector 和 namespaceSelector 进行 AND 操作,它将起作用。在 yaml 到 json 转换器中查看这些可能会有所帮助。
这是他们策略中的入口块,修改为 AND 条件
ingress:
- from:
- namespaceSelector:
matchLabels:
project: myproject
podSelector:
matchLabels:
role: frontend
同样的逻辑也适用于使用ports
规则,如果你将其与to
or from
声明。您会在示例中注意到它们前面没有破折号ports
根据入口规则。如果他们在前面加了一个破折号,那么它将是入口和端口的条件。
以下是他们讨论如何实现组合选择器时的一些 GitHub 链接:
- 此评论可能会提供更多背景信息。该 API 已经支持 OR,因此否则会破坏实现该功能的人的某些功能:https://github.com/kubernetes/kubernetes/issues/50451#issuecomment-336305625
- https://github.com/kubernetes/kubernetes/pull/60452
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)