2017-02-14 51 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