2.4. AdminNetworkPolicy 的出口节点和网络对等点


本节介绍 节点 和网络 对等点。管理员可以使用本节中的示例来设计 AdminNetworkPolicyBaselineAdminNetworkPolicy,以控制其集群中的北向流量。

除了支持 east-west 流量控制外,ANP 和 BANP 还允许管理员控制其北向流量,使集群或流量离开集群或流量到集群中的其他节点。最终用户可以执行以下操作:

  • 使用 节点 出口对等点实现对集群节点的出口流量控制
  • 使用节点网络 出口对等对 Kubernetes API 服务器实施出口流量控制
  • 使用网络对等点对集群外的外部目的地实施出口流量控制
注意

对于 ANP 和 BANP,只能为出口规则指定节点网络对等点。

使用 节点 对等管理员可以控制从 pod 到集群中节点的出口流量。这样做的好处是,您不必在向集群添加或删除节点时更改策略。

在以下示例中,通过使用节点选择器,允许任何带有restricted, confidential, 或 internal 级别安全的命名空间发送的、端口 6443 上的到 Kubernetes API 服务器的出口流量。它还拒绝来自带有 restricted, confidential, or internal 安全级别的任何命名空间的、到您的集群中的所有 worker 节点的流量。

例 2.8. 使用 nodes 对等的 ANP Allow egress 示例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: egress-security-allow
spec:
  egress:
  - action: Deny
    to:
    - nodes:
        matchExpressions:
        - key: node-role.kubernetes.io/worker
          operator: Exists
  - action: Allow
    name: allow-to-kubernetes-api-server-and-engr-dept-pods
    ports:
    - portNumber:
        port: 6443
        protocol: TCP
    to:
    - nodes: 
1

        matchExpressions:
        - key: node-role.kubernetes.io/control-plane
          operator: Exists
    - pods: 
2

        namespaceSelector:
          matchLabels:
            dept: engr
        podSelector: {}
  priority: 55
  subject: 
3

    namespaces:
      matchExpressions:
      - key: security 
4

        operator: In
        values:
        - restricted
        - confidential
        - internal
Copy to Clipboard Toggle word wrap
1
使用 matchExpressions 字段指定集群中的节点或一组节点。
2
指定使用 dept: engr 标记的所有 pod。
3
指定 ANP 的主题,其中包含任何与网络策略使用的标签匹配的命名空间。示例匹配任何带有 security 的级别为 restricted, confidential, 或 internal 级别的命名空间。
4
matchExpressions 字段指定键/值对。

集群管理员可以使用网络对等中的 CIDR 范围,并应用一个策略来控制离开 pod 的出口流量,并进入通过 network 字段指定的 CIDR 范围内配置的 IP 地址的目标。

以下示例使用网络对等,并组合了 ANP 和 BANP 策略来限制出口流量。

重要

请谨慎使用 namespace 字段中的空选择器({})。使用空选择器时,它还选择 OpenShift 命名空间。

如果您在 ANP 或 BANP Deny 规则中使用 0.0.0.0/0 的值,您必须在将 Deny 设置为 0.0.0.0/0 前将更高的优先级 ANP Allow 规则设置为所需的目的地。

例 2.9. 使用网络对等点的 ANP 和 BANP 示例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: network-as-egress-peer
spec:
  priority: 70
  subject:
    namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
  egress:
  - name: "deny-egress-to-external-dns-servers"
    action: "Deny"
    to:
    - networks:
1

      - 8.8.8.8/32
      - 8.8.4.4/32
      - 208.67.222.222/32
    ports:
      - portNumber:
          protocol: UDP
          port: 53
  - name: "allow-all-egress-to-intranet"
    action: "Allow"
    to:
    - networks: 
2

      - 89.246.180.0/22
      - 60.45.72.0/22
  - name: "allow-all-intra-cluster-traffic"
    action: "Allow"
    to:
    - namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
  - name: "pass-all-egress-to-internet"
    action: "Pass"
    to:
    - networks:
      - 0.0.0.0/0 
3

---
apiVersion: policy.networking.k8s.io/v1alpha1
kind: BaselineAdminNetworkPolicy
metadata:
  name: default
spec:
  subject:
    namespaces: {} # Use the empty selector with caution because it also selects OpenShift namespaces as well.
  egress:
  - name: "deny-all-egress-to-internet"
    action: "Deny"
    to:
    - networks:
      - 0.0.0.0/0 
4

---
Copy to Clipboard Toggle word wrap
1
使用网络指定集群外的 CIDR 网络范围。
2
指定来自资源的集群内流量的 CIDR 范围。
3 4
通过将 networks 值设置为 0.0.0.0/0 来指定到任何项的 Deny egress。在将 Deny 设置为 0.0.0.0/0 之前,请确保具有较高的优先级 Allow 规则到所需的目的地,因为这将拒绝包括到 Kubernetes API 和 DNS 服务器的所有流量。

使用网络对等来整合 network-as-egress-peer ANP 和 默认的 BANP 来强制以下 egress 策略:

  • 所有 pod 都无法通过列出的 IP 地址与外部 DNS 服务器进行通信。
  • 所有 pod 都可以与公司的其他内部网通信。
  • 所有 pod 都可以与其他 pod、节点和服务通信。
  • 所有 pod 都无法与互联网通信。将最后一个 ANP Pass 规则与强大的 BANP Deny 规则合并会创建一个保护策略来保护集群中的流量。

2.4.1.3. 一起使用节点对等和网络对等

集群管理员可以将节点网络对等组合到 ANP 和 BANP 策略中。

例 2.10. 节点网络对等示例

apiVersion: policy.networking.k8s.io/v1alpha1
kind: AdminNetworkPolicy
metadata:
  name: egress-peer-1 
1

spec:
  egress: 
2

  - action: "Allow"
    name: "allow-egress"
    to:
    - nodes:
        matchExpressions:
        - key: worker-group
          operator: In
          values:
          - workloads # Egress traffic from nodes with label worker-group: workloads is allowed.
    - networks:
      - 104.154.164.170/32
    - pods:
        namespaceSelector:
          matchLabels:
            apps: external-apps
        podSelector:
          matchLabels:
            app: web # This rule in the policy allows the traffic directed to pods labeled apps: web in projects with apps: external-apps to leave the cluster.
  - action: "Deny"
    name: "deny-egress"
    to:
    - nodes:
        matchExpressions:
        - key: worker-group
          operator: In
          values:
          - infra # Egress traffic from nodes with label worker-group: infra is denied.
    - networks:
      - 104.154.164.160/32 # Egress traffic to this IP address from cluster is denied.
    - pods:
        namespaceSelector:
          matchLabels:
            apps: internal-apps
        podSelector: {}
  - action: "Pass"
    name: "pass-egress"
    to:
    - nodes:
        matchExpressions:
        - key: node-role.kubernetes.io/worker
          operator: Exists # All other egress traffic is passed to NetworkPolicy or BANP for evaluation.
  priority: 30 
3

  subject: 
4

    namespaces:
      matchLabels:
        apps: all-apps
Copy to Clipboard Toggle word wrap
1
指定策略的名称。
2
对于节点网络对等,您只能在 ANP 中使用北向流量控制作为 egress
3
指定 ANP 的优先级,确定应评估它们的顺序。低的优先级规则具有更高的优先权。ANP 接受 0-99 的值,0 为最高优先级,99 为最低优先级。
4
指定集群中要应用策略的 pod 集合。在示例中,所有命名空间中带有 apps: all-apps 标签的任何 pod 都是策略的主题
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat