kubernetes 中的网络策略冲突

问题描述 投票:0回答:3

假设我有 2 个网络策略,用于匹配标签“app=database”的节点。假设:

  • 第一个策略具有阻止所有入口流量的规则。
  • 第二个策略有一条规则允许端口 5660 上的入口流量。

虽然这是一个简单的例子,但是 kubernetes 如何决定哪条规则获胜呢? 在更复杂的场景中,有多个重叠规则可能覆盖相似的 Pod,如何管理?例如:我们可以定义网络策略中的优先级吗?

谢谢。

kubernetes kubernetes-networkpolicy
3个回答
5
投票

Kubernetes 网络策略目前不允许 deny 策略。只有“允许”政策。您基本上将 pod 的所有允许策略放在一起以获得允许的连接。 当 pod 上有一个或多个网络策略时,则

至少其中一项网络策略

允许的所有连接都将被允许。 那么默认拒绝是如何工作的。它只是告诉我们没有允许的连接。

更详细的解释请参见

这里


0
投票


0
投票

其工作原理如下:

拒绝所有网络策略:此策略将指定不允许任何流量进入 Pod。例如:

yaml 复制代码 api版本:networking.k8s.io/v1 种类:网络策略 元数据: 名称:拒绝一切 规格: pod选择器:{} 政策类型:

入口
  • 出口 允许特定端口网络策略:此策略将指定允许特定端口上的流量。例如:
  • yaml 复制代码 api版本:networking.k8s.io/v1 种类:网络策略 元数据: 名称:允许端口 规格: pod选择器:{} 政策类型:

入口 入口:
  • 端口:
  • 协议:TCP 端口:80 当这两个策略应用于同一组 pod 时,将强制执行以下规则:
  • 默认拒绝全部:默认拒绝所有策略可确保阻止所有流量,除非其他策略明确允许。 允许特定端口:允许特定端口上的流量的策略将覆盖该特定流量的默认拒绝所有策略。 综合效应 入口流量:

将允许端口 80 上的流量(如允许端口策略中指定)。 由于拒绝全部策略,所有其他流量都将被拒绝。 出口流量:

如果拒绝全部策略包括出口,则所有出站流量都将被阻止,除非另一个策略中存在允许特定流量的出口规则。 行为示例: 如果 pod 受到上述两项政策的约束:

将允许端口 80 (HTTP) 上的入口流量。 任何其他端口上的入口流量都将被拒绝。 如果拒绝全部策略包括出口,则出口流量将被完全拒绝,除非有另一个策略明确允许某些出口流量。 在 Kubernetes 中,网络策略的组合方式是在策略的约束范围内应用任何给定连接的最宽松的规则。因此,您最终会遇到这样的情况:“允许”规则可以在“拒绝所有”规则中戳出漏洞

© www.soinside.com 2019 - 2024. All rights reserved.