Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Kubernetes 网络策略支持

总结 瞻博网络云原生 Contrail® 网络 (CN2) 允许您在 Contrail 防火墙安全策略框架内部署 Kubernetes 网络策略。您必须使用支持 NetworkPolicy(如 Contrail) 的 CNI 来部署网络策略。本主题提供有关如何在运行云原生 Contrail 网络的环境中部署 Kubernetes 网络策略的信息。

Kubernetes 网络策略概述

Kubernetes 网络策略允许您指定 Pod 如何与其他 Pod 和网络端点通信。Kubernetes NetworkPolicy 资源使 Pod 能够与:

  • 允许列表中的其他 Pod(Pod 无法阻止对自身的访问)。

  • 允许列表中有命名空间。

  • IP 块或无类域间路由 (CIDR)。

Kubernetes 网络策略仅适用于命名空间中的 Pod,并定义入口(源)和出口(目标)规则。Kubernetes 网络策略应用于 Pod 时具有以下特征:

  • Pod 特定,适用于单个 Pod 或一组 Pod。网络策略规则规定到该 Pod 的流量。

  • 为 Pod 定义入口流量和/或出口流量的流量规则。如果未明确指定方向,则默认情况下该策略将应用于入口方向。

  • 必须包含显式规则,用于在入口和出口方向中指定来自 allowlist 的流量。与允许列表规则不匹配的流量将被拒绝。

  • 允许的流量包括与应用于 Pod 的任何网络策略匹配的流量。

Kubernetes 网络策略具有以下附加特征:

  • 未应用于 Pod 时,该 Pod 会接受来自所有来源的流量。

  • 对连接采取行动,而不是针对单个数据包采取行动。例如,如果配置的策略允许从 Pod A 到 Pod B 的流量,则也允许从 Pod B 到 Pod A 的数据包,即使已实施的策略不允许 Pod B 发起与 Pod A 的连接。

Kubernetes 网络策略包括以下部分:

  • spec:描述 Kubernetes 对象所需的状态。对于网络策略, podSelector 规格中的和 policyTypes 字段指定该策略的规则。

  • podSelector:选择应用策略的 Pod 组。空 podSelector 部分选择命名空间中的所有 Pod。

  • policyTypes:指定策略是应用于选定 Pod 的入口流量,还是应用于选定 Pod 的出口流量。 policyTypes 如果未指定,则默认选择入口方向。

  • ingress:允许与和ports部分匹配的from入口流量。在以下示例中,入口规则允许使用标签应用程序与命名空间中的所有 dev Pod 进行连接:webserver-dev在 TCP 端口 80 上,发件人:

    • 默认命名空间中带有标签 app: client1-dev的任何 Pod。

    • 10.169.25.20/32 范围内的所有 IP 地址。

    • 默认命名空间中带有标签 project: jtac的任何 Pod。

  • egress:允许与和ports部分匹配的to出口流量。在示例 1 中,出口规则允许来自默认命名空间中任何带有标签app: dbserver-dev的 Pod 的连接端口 TCP 80。

  • ipBlock:选择要允许作为入口源或出口目标的 IP CIDR 范围。 ipBlock 网络策略部分包含以下两个字段:

    • cidr (ipBlock.cidr):网络策略允许指定 IP 范围内的出口流量或入口流量。

    • 除外(ipBlock.除外):Kubernetes 预计指定 IP 范围内的流量与策略不匹配。网络策略会拒绝进入或从指定 exceptIP 范围内的入口流量。

      注意:如果您在 except网络策略中使用,Kubernetes 希望 IP 范围内的识别流量 except与策略不匹配。CN2 不支持使用该术语的这种特定场景 except。因此,我们建议您避免使用 except

以下 NetworkPolicy 资源示例显示 ingressegress 规则:

在此示例中,允许来自 CIDR 10.169.25.20/32 port: 80 中 IP 的入口 TCP 流量。允许流向 Pod 的 matchLabels app: dbserver-dev TCP port: 80 出口流量。

在云原生 Contrail 网络中部署 Kubernetes 网络策略

在 CN2 中,配置和部署 Kubernetes 网络策略后,会在 Contrail 中自动创建该策略。以下是 Kubernetes 网络策略的示例:

此策略将导致在 CN2 中创建以下对象:

标签

地址组

防火墙规则

防火墙策略

表 1:标记
关键 价值
作用 Db
命名 空间 默认
项目 我的项目
作用 前端
表 2:地址组
名称 前缀
test-network-policy-除外 172.17.1.0/24
test-network-policy 172.17.0.0/16
test-network-policy-egress 10.0.0.0/24
表 3:防火墙规则
规则名称 操作 服务 端点1 方向 端点2
default-ingress-test-network-policy-0-ipBlock-0-17x.xx.1.0/24-0 否认 tcp:6379 role=db && 命名空间=default 入口 地址组:172.17.1.0/24
default-ingress-test-network-policy-0-ipBlock-0-cidr-17x.xx.0.0/16-0 通过 tcp:6379 role=db && 命名空间=default 入口 地址组:172.17.0.0/16
default-ingress-test-network-policy-0-namespaceSelector-1-0 通过 tcp:6379 role=db && 命名空间=default 入口 项目=我的项目
default-ingress-test-network-policy-0-podSelector-2-0 通过 tcp:6379 role=db && 命名空间=default 入口 命名空间=default && role=前端
default-egress-test-network-policy-ipBlock-0-cidr-10.0.0.0/24-0 通过 tcp:5978 role=db && 命名空间=default 出口 地址组:10.0.0.0/24
表 4:防火墙策略
名称 规则
default-test-network-policy

default-ingress-test-network-policy-0-ipBlock-0-172.17.1.0/24-0,default-ingress-test-network-policy-0-ipBlock-0-cidr-172.17.0.0/16-0

default-ingress-test-network-policy-0-namespaceSelector-1-0

default-ingress-test-network-policy-0-podSelector-2-0,default-egress-test-network-policy-ipBlock-0-cidr-10.0.0.0/24-0

Kubernetes 网络策略匹配 Expression

从云原生 Contrail 网络 22.3 开始,CN2 通过 matchExpressions.有关的更多信息matchExpressions,请参阅 Kubernetes 文档中的“支持基于集要求的资源”。