假设我有 2 个网络策略,用于匹配标签“app=database”的节点。假设:
虽然这是一个简单的例子,但是 kubernetes 如何决定哪条规则获胜呢? 在更复杂的场景中,有多个重叠规则可能覆盖相似的 Pod,如何管理?例如:我们可以定义网络策略中的优先级吗?
谢谢。
其工作原理如下:
拒绝所有网络策略:此策略将指定不允许任何流量进入 Pod。例如:
yaml 复制代码 api版本:networking.k8s.io/v1 种类:网络策略 元数据: 名称:拒绝一切 规格: pod选择器:{} 政策类型:
入口
入口 入口:
将允许端口 80 上的流量(如允许端口策略中指定)。 由于拒绝全部策略,所有其他流量都将被拒绝。 出口流量:
如果拒绝全部策略包括出口,则所有出站流量都将被阻止,除非另一个策略中存在允许特定流量的出口规则。 行为示例: 如果 pod 受到上述两项政策的约束:
将允许端口 80 (HTTP) 上的入口流量。 任何其他端口上的入口流量都将被拒绝。 如果拒绝全部策略包括出口,则出口流量将被完全拒绝,除非有另一个策略明确允许某些出口流量。 在 Kubernetes 中,网络策略的组合方式是在策略的约束范围内应用任何给定连接的最宽松的规则。因此,您最终会遇到这样的情况:“允许”规则可以在“拒绝所有”规则中戳出漏洞