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

标记和标签的限制

标记具有以下限制:

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

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

标签具有以下限制:

  • 每个 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 的允许所有输出网络策略。
  • 在策略模式下,在 podSelectornamespaceSelector 中指定 matchExpressions 时,最多允许包含一个 In 运算符。如果同时指定 namespaceSelectorpodSelector,则其中一个最多可以包含一个 In 运算符。这两者不能都包含 In 运算符。例如,不允许使用以下规范:
        - namespaceSelector:
            matchExpressions:
            - {key: key1, operator: In, values: [value1]}
          podSelector:
            matchExpressions:
            - {key: key1, operator: In, values: [value1]}
  • 在管理器模式下,在 podSelectornamespaceSelector 或者 namespaceSelectorpodSelector 中指定 matchExpressions 时,对 In 运算符的数量没有任何限制。
  • protocol 字段中不支持具有 SCTP 的网络策略。

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

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

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

当 NSX 应用程序 ID 防火墙规则应用于 NCP 创建的资源时,仅支持“分段”和“分段端口”组成员资格条件。请注意,仅当 NCP 配置为使用 NSX 策略 API 时,才支持应用程序 ID 防火墙规则功能。