2017-02-14 59 views
3

是否有能力同时过滤命名空间 pod的标签?Kubernetes网络策略在命名空间和pod标签上过滤

存在于文档的例子在https://kubernetes.io/docs/user-guide/networkpolicies/#the-networkpolicy-resource

- from: 
- namespaceSelector: 
    matchLabels: 
    project: myproject 
- podSelector: 
    matchLabels: 
    role: frontend 

意味着通信被允许用于吊舱从namespace myprojectrole=frontend

有什么办法可以将“或”改成“和”吗?

回答

1

我想你误解了选择器。在为NetworkPolicyPeer API文档,你会发现这些描述:

namespaceSelector

选择命名空间使用集群作用域的标签。这匹配由此标签选择器选择的所有名称空间中的所有窗格。该字段遵循标准标签选择器语义。如果省略,则此选择器不选择名称空间。如果存在但为空,则此选择器将选择所有名称空间。

podSelector

这是一个标签选择器在该命名空间中选择豆荚。该字段遵循标准标签选择器语义。如果未提供,则此选择器不选择任何窗格。如果存在但是为空,则此选择器将选择此名称空间中的所有窗格。

因此,组合出两个选择器并没有真正执行布尔运算,他们瞄准不同的作用域(当前的命名空间与所有其他命名空间)。

所以对于你的问题的唯一解决办法是也标记每个吊舱与命名空间相关的标签,你可以内namespaceSelector

+0

我不明白这是如何工作的。你介意再说一遍吗? – Rafaesp

+0

你的豆荚需要一个带有名称空间的标签 - 这样'podSelector'也可以与此标签匹配 – pagid

+0

但是你永远无法从不同的命名空间中选择一个豆荚,对吧? – Rafaesp