配置某些网络资源时,必须注意一些限制。
标记和标签的限制
标记具有以下限制:
- 标记范围具有 128 个字符的限制。
- 标记值具有 256 个字符的限制。
- 每个对象最多可以具有 30 个标记。
当 Kubernetes 或 OpenShift 注释被复制到 NSX-T Data Center 范围和标记,并且超出限制时,这些限制可能会导致出现问题。例如,如果某个标记适用于交换机端口,而该标记被用于防火墙规则,则可能无法按预期方式应用该规则,因为注释键或值在复制到范围或标记时被截断。
标签具有以下限制:
- 每个 pod 不能超过 25 个标签。
- 每个命名空间不能超过 27 个标签。
- Ingress 控制器 pod 不能超过 24 个标签。
网络策略
NetworkPolicy 资源具有以下限制:
- podSelector 或 namespaceSelector 最多只能具有 4 个 matchLabels。
- 在 ingress from 部分或 egress to 部分中,如果您的某个元素同时指定了 namespaceSelector 和 podSelector,则 namespaceSelector 最多只能选择 5 个命名空间。否则,将出现错误。此类规范的示例(请注意,在 podSelector 前面没有连字符):
- namespaceSelector: matchLabels: project: myproject podSelector: matchLabels: role: db
- 对于任何输入或输出规则,namespaceSelector 和 podSelector 的总数不能超过 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 会重新处理该策略。
如果某个网络策略仅指定了输出而未指定输入,则不会为输入流量创建任何防火墙规则。同样,如果某个网络策略仅指定了输入而未指定输出,则不会为输出流量创建任何防火墙规则。
当 NSX 应用程序 ID 防火墙规则应用于 NCP 创建的资源时,仅支持“分段”和“分段端口”组成员资格条件。请注意,仅当 NCP 配置为使用 NSX 策略 API 时,才支持应用程序 ID 防火墙规则功能。