天天看點

#yyds幹貨盤點#K8S-控制政策

網絡政策是控制 Pod 資源組間以及與其他網絡端點間如何進行通信的規範,它使用标簽來分組 Pod,并在該組 Pod 之上定義規則來管控其流量,進而為 Kubernetes 提供更為精細的流量控制以及租戶隔離機制。NetworkPolicy 資源是 Kubernetes API 的最優先的,管理者或使用者可使用 NetworkPolicy 這一标準資源類型按需定義網絡通路控制政策。

Kubernetes 預設并未對 Pod 之上的流量作為任何限制,Pod 對象能夠與叢集上的其他任何 Pod 通信,也能夠與叢集外部的網絡端點互動。NetworkPolicy 是名稱空間級别的資源,允許使用者使用标簽選擇器在篩選出的一組 Pod 對象上分别管理 Ingress 和 Egress 流量。一旦将 Network Policy 引入到名稱空間中,則被标簽選擇器“選中”的 Pod 将預設拒絕所有流量,而僅放行由特定的 NetworlPolicy 資源明确“允許”的流量。然而,未被任何 NetworkPolicy 資源的标簽選擇器選中的 Pod 對象的流量則不受影響。

Pod 組:由 NetworkPolicy 資源通過 Pod 标簽選擇器(spec.podSelector)動态選出的一組 Pod 資源集合,它們也是該網絡政策規則管控的目标,可通過 macthLabel 或 matchExpression 類型的标簽選擇器標明。

Egress 規則:出站流量的相關規則,負責管控由標明的 Pod 組發往其他網絡端點的流量,可由流量的目标網絡端點(spec.egress.to)和端口(spec.egress.ports)來定義。

Ingress 規則:入站流量的相關規則,負責管控可由標明的 Pod 組所接收的流量,它能夠由流量發出的源端點(spec.ingress.from)和流量的目标端口(spec.ingress.ports)來定義。

對端端點(to, from):與標明的 Pod 組互動的對端主機,它可由 CIDR 格式的 IP 位址塊(ipBlock)、網絡名稱空間選擇器(namespaceSelector)來比對名稱空間内的所有 Pod 對象,甚至也可以是由 Pod 選擇器(podSelector)在指定名稱空間中選出的一組特定 Pod 對象等。

Calico 項目既能獨立地為 Kubernetes 叢集提供網絡插件和網絡政策,也能與 Flannel 結合在一起,由 Flannel 提供網絡解決方案,而 Calico 僅用于提供網絡政策,這種解決方案就是獨立的 Canal 項目。

繼續閱讀