kubernetes network policy

December 12, 2021

—

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

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

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

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

NetworkPolicy 資源屬於 namespace 級別。

Ingress 入站

Ingress 字段,主要有以下

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

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

Egress 出站

Egress 字段,主要有以下

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