配置某些网络资源时,必须注意一些限制。

标记和标签的限制

标记具有以下限制:

  • 标记范围具有 128 个字符的限制。
  • 标记值具有 256 个字符的限制。
  • 每个对象最多可以具有 30 个标记。

当 Kubernetes 或 OpenShift 注释被复制到 NSX-T Data Center 范围和标记,并且超出限制时,这些限制可能会导致出现问题。例如,如果某个标记适用于交换机端口,而该标记被用于防火墙规则,则可能无法按预期方式应用该规则,因为注释键或值在复制到范围或标记时被截断。

标签具有以下限制:

  • 每个 pod 不能超过 25 个标签。
  • 每个命名空间不能超过 27 个标签。
  • Ingress 控制器 pod 不能超过 24 个标签。

网络策略

NetworkPolicy 资源具有以下限制:
  • podSelectornamespaceSelector 最多只能具有 4 个 matchLabels
  • ingress from 部分或 egress to 部分中,如果您的某个元素同时指定了 namespaceSelectorpodSelector,则 namespaceSelector 最多只能选择 5 个命名空间。否则,将出现错误。此类规范的示例(请注意,在 podSelector 前面没有连字符):
    - namespaceSelector:
        matchLabels:
          project: myproject
      podSelector:
        matchLabels:
          role: db
  • 对于任何输入或输出规则,namespaceSelectorpodSelector 的总数不能超过 5。例如,不允许以下规则,因为该规则总共包含 6 个选择器:
    ingress:
        - namespaceSelector:
            matchLabels:
              project: myproject1
        - namespaceSelector:
            matchLabels:
              project: myproject2
        - namespaceSelector:
            matchLabels:
              project: myproject3
        - podSelector:
            matchLabels:
              role: db
        - podSelector:
            matchLabels:
              role: app
        - podSelector:
            matchLabels:
              role: infra
  • to.ports 部分中不支持具有 namedPorts 的允许所有输出网络策略。
  • 不支持字段 matchExpressions
  • protocol 字段中不支持具有 SCTP 的网络策略。

要解决这些限制,您可以创建具有更具体的 matchLabels 的网络策略,或者将一个网络策略替换为多个需要的选择器数少于 5 个的网络策略。

如果 NCP 不支持网络策略,NCP 会将其注释为错误。您可以更新网络策略以修复此错误,然后 NCP 会重新处理该策略。

在 NCP 3.0.0 和 3.0.1 中,如果某个网络策略仅指定了输出而未指定输入,则会创建一个允许所有输入流量的防火墙规则。同样,如果某个网络策略仅指定了输入而未指定输出,则会创建一个允许所有输出流量的防火墙规则。

从 NCP 3.0.2 开始,如果某个网络策略仅指定了输出而未指定输入,则不会为输入流量创建任何防火墙规则。同样,如果某个网络策略仅指定了输入而未指定输出,则不会为输出流量创建任何防火墙规则。