kubernetes network policy

December 12, 2021

Network policy 用於控制分組的 Pod 資源彼此之間如何進行通訊,獲分組的 Pod 資源如何與其它網路端點進行通訊的規範。它是一種更為精細的流量控制,實現租戶隔離機制。

Kubernetes 中,封包流入和流出的地點是 Pod 資源,所以 NetworkPolicy 資源也使用標籤選擇器選出一組 Pod 資源作為控管對象。內容會定義入的流量 ingress 規則,或是出的流量 Egress 規則。是否為部分或是全部生效取決於 policyTypes

在還沒進行 Network policy 資源綁定時,Pod 是可接受四面八方的流量,並做出回應。而當綁定 Network policy 資源後,可以將某些流量進行隔離。

EgressIngress 都可使用網路端點,其通常是某 namespace 中的一或一組 Pod 資源,會經由 namespaceSelector 選定特定 namespace 後,經由 ipBlockpodSelector 進行指定。在未定義 EgressIngress 默認是非隔離狀態。一旦在 networkpolicy.spec 中給出 IngressEgress,則它們的 fromto 字段的值就成了白名單列表,而空值意味著所有端點,即不限制訪問。

NetworkPolicy 資源屬於 namespace 級別。

Ingress 入站

Ingress 字段,主要有以下

當 from 和 to 同時定義表示 and 的邏輯關係,它將會放行滿足 from 和 to 的流量。

from 可以使用以下,當定義了兩個以上,則會有 or 邏輯關係。

Egress 出站

Egress 字段,主要有以下

期內嵌的字段與 Ingress 是相同,區別是在於流量方向。