×

作为集群管理员,您可以定义网络策略,将流量限制到集群中的pod。

关于网络策略

在使用支持Kubernetes网络策略的Kubernete容器网络接口(CNI)插件的集群中,网络隔离完全由网络策略物体。在OpenShift Container Platform 4.6中,OpenShift SDN支持在其默认网络隔离模式下使用网络策略。

使用OpenShift SDN群集网络提供程序时,以下限制适用于网络策略:

  • 根据指定的退出网络策略出口字段不受支持。

  • 网络策略支持IPBlock,但不支持除了条款。如果使用包含除了子句,SDN pods日志警告和该策略的整个IPBlock部分将被忽略。

网络策略不适用于主机网络命名空间。启用主机网络的播客不受网络策略规则的影响。

默认情况下,项目中的所有pod都可以从其他pod和网络端点访问。要在项目中隔离一个或多个pod,可以创建网络策略对象以指示允许的传入连接。项目管理员可以创建和删除网络策略对象在其自己的项目中。

如果一个吊舱与一个或多个中的选择器匹配网络策略对象,则pod将只接受其中至少一个对象允许的连接网络策略物体。未被任何网络策略对象是完全可访问的。

以下示例网络策略对象演示了支持不同场景:

  • 拒绝所有流量:

    要使项目默认被拒绝,请添加网络策略匹配所有pod但不接受流量的对象:

    友善的: 网络策略
    api版本: 联网.k8s.io/v1
    元数据:
      名称: 默认拒绝
    规范:
      吊舱选择器: {}
      进入: []
  • 仅允许从OpenShift容器平台入口控制器进行连接:

    要使项目仅允许从OpenShift Container Platform Ingress Controller进行连接,请添加以下内容网络策略对象。

    api版本: 联网.k8s.io/v1
    友善的: 网络策略
    元数据:
      名称: 允许自开式换档
    规范:
      进入:
      - :
        - 命名空间选择器:
            匹配标签:
              network.openshift.io/policy-group: 进入
      pod选择器: {}
      策略类型:
      - 进入
  • 仅接受来自项目内pods的连接:

    要使pods接受来自同一项目中其他pods的连接,但拒绝来自其他项目中pods的所有其他连接,请添加以下内容网络策略对象:

    友善的: 网络策略
    api版本: 联网.k8s.io/v1
    元数据:
      名称: 允许名称空间
    规范:
      pod选择器: {}
      进入:
      - :
        - pod选择器: {}
  • 仅允许基于pod标签的HTTP和HTTPS流量:

    仅启用HTTP和HTTPS访问具有特定标签的pods(角色=前端在以下示例中),添加网络策略对象类似于以下内容:

    友善的: 网络策略
    api版本: 联网.k8s.io/v1
    元数据:
      名称: allow-http和-https
    规范:
      pod选择器:
        匹配标签:
          角色: 前端
      进入:
      - 端口:
        - 协议: 传输控制协议
          港口: 80
        - 协议: 传输控制协议
          港口: 443
  • 通过使用名称空间和pod选择器接受连接:

    要通过组合命名空间和pod选择器来匹配网络流量,可以使用网络策略对象类似于以下内容:

    友善的: 网络策略
    api版本: 联网.k8s.io/v1
    元数据:
      名称: allow-pod和namespace-bother
    规范:
      pod选择器:
        匹配标签:
          名称: 测试吊舱
      进入:
        - :
          - 命名空间选择器:
              匹配标签:
                项目: 项目_名称
            pod选择器:
              匹配标签:
                名称: 测试棒

网络策略对象是相加的,这意味着您可以将多个网络策略对象组合在一起以满足复杂的网络需求。

例如,对于网络策略在前面的示例中定义的对象,可以同时定义允许名称空间allow-http和-https同一项目中的策略。因此,允许带有标签的豆荚角色=前端,以接受每个策略允许的任何连接。也就是说,来自同一命名空间中pods的任何端口上的连接,以及端口上的链接80443来自任何命名空间中的pods。

网络策略的优化

使用网络策略隔离通过名称空间中的标签相互区分的播客。

有效使用网络策略规则的指导原则仅适用于OpenShift SDN群集网络提供商。

申请效率低网络策略对象到单个名称空间中的大量单个pod。IP地址级别上不存在Pod标签,因此网络策略会为使用pod选择器.

例如,如果规范pod选择器和入口pod选择器在中网络策略对象每个匹配200个pods,然后生成40000(200*200)个OVS流规则。这可能会降低节点的速度。

设计网络策略时,请参考以下准则:

  • 通过使用名称空间来包含需要隔离的pod组,减少OVS流规则的数量。

    网络策略对象,通过使用命名空间选择器或空的pod选择器,只生成与命名空间的VXLAN虚拟网络ID(VNID)匹配的单个OVS流规则。

  • 将不需要隔离的pod保留在其原始名称空间中,并将需要隔离的Pod移动到一个或多个不同的名称空间中。

  • 创建其他有针对性的跨命名空间网络策略,以允许您确实希望从隔离的pod中允许的特定流量。

接下来的步骤