您可以定义成员资格条件以根据一个或多个成员资格条件在 NSX 中动态添加成员。

一个成员资格条件可以具有一个或多个条件。这些条件可以使用相同的成员类型,也可以混合使用不同的成员类型。

在成员资格条件中添加多个混合 NSX 成员类型或混合 Kubernetes 成员类型的条件时,存在一些限制。请参见本文档后面的混合 NSX 成员类型的成员资格条件的限制一节以及混合 Kubernetes 成员类型的成员资格条件的限制一节。

默认情况下,NSX 会在成员资格条件中的每个条件后使用逻辑 AND 运算符。不支持使用其他逻辑运算符以连接成员资格条件中的条件。

要连接成员资格条件,可以使用 OR 和 AND 运算符。默认情况下,系统会选择 OR 运算符以连接两个条件。只有在以下情况下才支持在两个成员资格条件之间使用 AND 运算符:
  • 两个成员资格条件使用相同的成员类型。
  • 这两个成员资格条件都使用单个条件。
在添加多个条件时,存在以下限制:
  • 在单个成员资格条件中最多支持 5 个相同成员类型的条件。例如,在一个成员资格条件中,您最多可以添加 5 个虚拟机成员类型的条件。
  • 在单个成员资格条件中最多支持 15 个混合成员类型的条件。例如,在一个成员资格条件中,您最多可以添加 15 个混合使用“分段”和“分段端口”成员类型的条件。
  • 在一个通用组中,最多支持 35 个混合成员类型的条件。
一个组最多可以具有 5 个成员资格条件。不过,您可以在组中添加的成员资格条件总数取决于每个成员资格条件中的条件数。请参见以下示例。
示例 1
一个组具有三个成员资格条件和总共 35 个条件:
  • 成员资格条件 1 具有 15 个混合成员类型的条件。
  • 成员资格条件 2 具有 15 个混合成员类型的条件。
  • 成员资格条件 3 具有 5 个相同成员类型的条件。
示例 2
一个组具有 4 个成员资格条件和总共 35 个条件:
  • 成员资格条件 1 具有 15 个混合成员类型的条件。
  • 成员资格条件 2 具有 14 个混合成员类型的条件。
  • 成员资格条件 3 具有 4 个相同成员类型的条件。
  • 成员资格条件 4 具有两个相同成员类型的条件。
示例 3
一个组具有 5 个成员资格条件和总共 22 个条件:
  • 成员资格条件 1 具有 10 个混合成员类型的条件。
  • 成员资格条件 2 具有三个相同成员类型的条件。
  • 成员资格条件 3 具有 4 个相同成员类型的条件。
  • 成员资格条件 4 具有三个相同成员类型的条件。
  • 成员资格条件 5 具有两个混合成员类型的条件。
由于该组已达到成员资格条件限制(5 个),因此,您无法添加其他成员资格条件。不过,如果需要,您可以在 5 个成员资格条件中的任何成员资格条件中添加更多条件,但不能超过前面提到的以下上限:
  • 在单个成员资格条件中最多具有 5 个相同成员类型的条件。
  • 在单个成员资格条件中最多具有 15 个混合成员类型的条件。
  • 在通用组中总共具有 35 个条件。

混合 NSX 成员类型的成员资格条件的限制

成员类型 混合成员类型的成员资格条件 标记运算符 范围运算符
虚拟机

不受支持

  • 等于 - 可以选择一个标记。
  • 包含
  • 开头为
  • 结尾为
  • 等于
分段

受支持

可以将基于“分段”的条件与基于“分段端口”的条件混合使用

  • 等于 - 可以选择一个标记。
  • 不等于 - 可以选择一个标记。
  • 等于
  • 不等于 - 如果选定,则移除标记运算符。
分段端口

受支持

可以将基于分段端口的条件与基于 NSX 分段的条件混合使用

  • 等于 - 可以选择一个标记。
  • 不等于 - 可以选择一个标记。
  • 不属于 - 最多可以选择 5 个标记。
  • 等于
  • 不等于 - 如果选定,则移除标记运算符。
分布式端口组

受支持

可以将基于分布式端口组的条件与基于分布式端口的条件混合使用

  • 等于 - 可以选择一个标记。
  • 不等于 - 可以选择一个标记。
  • 等于
  • 不等于 - 如果选定,则移除标记运算符。
分布式端口

受支持

可以将基于分布式端口的条件与基于分布式端口组的条件混合使用

  • 等于 - 可以选择一个标记。
  • 不等于 - 可以选择一个标记。
  • 不属于 - 最多可以选择 5 个标记。
  • 等于
  • 不等于 - 如果选定,则移除标记运算符。
IP 集 - 以后将弃用该成员类型。当前提供该成员类型是为了与现有的组或 NS 组保持向后兼容(根据 IP 集的基于标记的成员资格条件)。我们建议您将作为成员类型,并在成员资格条件中添加基于标记的类型为“仅 IP 地址”的组。

不受支持

  • 等于 - 可以选择一个标记。
  • 等于
- 使用该成员类型在成员资格条件中添加基于标记的类型为“仅 IP 地址”的组。

不受支持

等于 - 可以选择一个标记。 等于

使用 Kubernetes 成员类型的成员资格条件概述

NSX 4.1 开始,您可以使用动态成员资格条件中的 Kubernetes 成员类型创建通用组,以匹配流入或流出 Antrea Kubernetes 集群的流量。

然后,可以在分布式防火墙规则或网关防火墙规则中使用这些通用组来保护 NSX 环境中的虚拟机与 Antrea Kubernetes 集群中的 Pod 之间的流量。

此功能需要使用 VMware Container Networking™ with Antrea™ 1.6.0 或更高版本提供的 Antrea-NSX Interworking 版本。请参见 1.6.0 发行说明

在通用组中,仅当至少有一个 Antrea Kubernetes 集群注册到 NSX 环境中时,Kubernetes 成员类型才会显示在成员资格条件页面上。

注: 在多租户 NSX 环境中,Kubernetes 集群资源不会向项目清单公开。因此,在项目中,您无法使用动态成员资格条件中的 Kubernetes 成员类型创建通用组。

下表列出了 NSX 4.1 及更高版本的默认视图中提供的用于在通用组中添加动态成员资格条件的 Kubernetes 成员类型。每个 Kubernetes 成员类型都属于集群范围或命名空间范围。

成员类型 范围

Kubernetes 集群

集群

Kubernetes 命名空间

命名空间

Kubernetes 节点

集群

Kubernetes 服务

命名空间

Kubernetes Ingress

命名空间

Kubernetes Gateway

命名空间

Antrea Egress

集群

Antrea IP 池

集群

用于使用 Kubernetes 成员类型的条件的命名约定

下表介绍了本文档中用于表示可在动态成员资格条件中添加的不同条件的命名约定,这些条件基于 Kubernetes 成员类型。

用于条件的命名约定 含义

Kubernetes 集群条件

动态成员资格条件中的条件基于 Kubernetes 集群成员类型。

Kubernetes 命名空间条件

动态成员资格条件中的条件基于 Kubernetes 命名空间成员类型。

资源条件

动态成员资格条件中的条件基于以下任意 Kubernetes 成员类型:
  • Kubernetes 服务
  • Kubernetes Ingress
  • Kubernetes Gateway
  • Antrea Egress
  • Antrea IP 池
  • Kubernetes 节点

集群范围的资源条件

动态成员资格条件中的条件基于以下任意 Kubernetes 成员类型:
  • Antrea Egress
  • Antrea IP 池
  • Kubernetes 节点

命名空间范围的资源条件

动态成员资格条件中的条件基于以下任意 Kubernetes 成员类型:
  • Kubernetes 服务
  • Kubernetes Ingress
  • Kubernetes Gateway

混合 Kubernetes 成员类型的成员资格条件的限制

下表简要概述了在单个成员资格条件中使用 Kubernetes 成员类型时适用的限制或验证。有关验证的示例,请参见本文档后面的验证使用 Kubernetes 成员类型的动态分组一节。

成员类型 在成员资格条件中使用成员类型的限制 支持的属性 标记运算符 范围运算符

Kubernetes 集群

不能在成员资格条件中单独使用。

一个成员资格条件中只允许使用一个集群条件。

必须与至少一个 Kubernetes 资源条件混合使用。

(可选)可以与 Kubernetes 命名空间条件和 Kubernetes 资源条件混合使用。

名称

不受支持

不受支持

Kubernetes 命名空间

不能在成员资格条件中单独使用。

不能与集群范围的资源条件混合使用。

必须与命名空间范围的资源条件混合使用。

(可选)可以与 Kubernetes 集群条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Antrea Egress

可以在成员资格条件中单独使用。

(可选)可以与 Kubernetes 集群条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Antrea IP 池

可以在成员资格条件中单独使用。

(可选)可以与 Kubernetes 集群条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Kubernetes Ingress

可以在成员资格条件中单独使用。

(可选)可以只与 Kubernetes 命名空间条件或只与 Kubernetes 集群条件混合使用,也可以同时与这两种条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Kubernetes Gateway

可以在成员资格条件中单独使用。

(可选)可以只与 Kubernetes 命名空间条件或只与 Kubernetes 集群条件混合使用,也可以同时与这两种条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Kubernetes 服务

可以在成员资格条件中单独使用。

(可选)可以只与 Kubernetes 命名空间条件或只与 Kubernetes 集群条件混合使用,也可以同时与这两种条件混合使用。

名称

标记

等于 - 可以选择一个标记

等于

Kubernetes 节点

可以在成员资格条件中单独使用。

仅允许使用单个节点条件。

(可选)可以与 Kubernetes 集群条件混合使用。

不能与 Kubernetes 命名空间条件或 Kubernetes 资源条件混合使用。

IP 地址

Pod CIDR

不受支持

请参见此表后面的“备注”。

不受支持

注: 通过 API 创建使用 Kubernetes 节点成员类型的通用组时,仅允许使用“匹配”运算符。此运算符只能接受 * 值。* 通配符将匹配 K8s 集群中的所有节点(如果 Kubernetes 节点条件与 Kubernetes 集群条件混合使用),或者将匹配所有集群中的节点(如果单独使用 Kubernetes 节点条件)。

验证使用 Kubernetes 成员类型的动态分组

验证 1
一个成员资格条件最多具有一个 Kubernetes 集群条件。要按名称匹配单个 Kubernetes 集群,请使用“等于”运算符并输入集群名称。
注: Kubernetes 集群必须是唯一的。
如果要在单个 Kubernetes 集群条件中匹配多个集群,可以使用以下运算符之一:
  • 位于
  • 开头为
  • 结尾为

示例:

匹配单个 K8s 集群 匹配多个 K8s 集群
成员资格条件:

Kubernetes 集群名称等于 ClusterA

成员资格条件:

Kubernetes 集群名称位于 ClusterA,ClusterB,ClusterC

最多允许使用五个以逗号分隔的值。这些值不能以空格分隔。

验证 2

可以将具有一个 Kubernetes 集群条件的成员资格条件与任一 Kubernetes 资源条件混合使用。如果在同一成员资格条件中添加 Kubernetes 命名空间条件,则资源条件必须仅限于命名空间范围的资源条件。

示例:
  • 具有一个 Kubernetes 集群条件和三个 Kubernetes Ingress 条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件和两个 Antrea Egress 条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件和三个 Antrea IP 池条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、一个 Kubernetes 命名空间条件和三个 Kubernetes Gateway 条件的成员资格条件有效。
验证 3
成员资格条件必须至少包含一个 Kubernetes 资源条件。如果成员资格条件包含以下条件,则无效:
  • 仅 Kubernetes 集群条件
  • 仅 Kubernetes 命名空间条件
  • 仅 Kubernetes 集群条件和 Kubernetes 命名空间条件
示例:
  • 具有一个 Kubernetes 集群条件、一个 Kubernetes 命名空间条件和一个 Kubernetes Ingress 条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、两个 Kubernetes 命名空间条件和三个 Kubernetes Ingress 条件的成员资格条件有效。
验证 4

成员资格条件只能有一个 Kubernetes 节点条件。(可选)一个 Kubernetes 节点条件只能与一个 Kubernetes 集群条件混合使用。

Kubernetes 节点条件不能与 Kubernetes 命名空间条件或 Kubernetes 资源条件混合使用。

仅具有一个 Kubernetes 节点条件的成员资格条件可以独立使用。但是,仅具有一个 Kubernetes 节点条件的组将匹配注册到 NSX 的所有 Antrea Kubernetes 集群的节点。

Kubernetes 节点条件当前不支持标记运算符和范围运算符。

Kubernetes 节点条件支持以下两个属性。

属性 描述

IP 地址

匹配指定 Antrea Kubernetes 集群的所有节点的内部 IP 地址。

Pod CIDR

匹配指定 Antrea Kubernetes 集群的所有节点的 Pod CIDR。

验证 5
如果成员资格条件包含 Kubernetes 集群条件和 Kubernetes 命名空间条件,则必须至少包含一个命名空间范围的 Kubernetes 资源条件。不能在同一成员资格条件中混合使用以下任意集群范围的 Kubernetes 资源条件:
  • Antrea Egress
  • Antrea IP Pool
  • Kubernetes 节点
示例:
  • 具有一个 Kubernetes 集群条件、两个 Kubernetes 命名空间条件和 Kubernetes Gateway 条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、四个 Kubernetes 命名空间条件和三个 Kubernetes 服务条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、一个 Kubernetes 命名空间条件和一个 Antrea Egress 条件的成员资格条件无效,因为 Antrea Egress 是集群范围的资源。
验证 6
成员资格条件必须至少包含一个 Kubernetes 资源条件。资源条件可以在成员资格条件中单独使用。但是,如果在一个成员资格条件中添加多个资源条件,则所有资源条件必须具有相同的成员类型。
注: Kubernetes 集群条件和 Kubernetes 命名空间条件用于定义成员资格条件的范围。它们不是 Kubernetes 资源条件,因此不受此验证规则的限制。
示例:
  • 具有五个 Kubernetes 服务条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、三个 Kubernetes 命名空间条件和四个 Kubernetes 服务条件的成员资格条件有效。
  • 具有一个 Kubernetes 集群条件、三个 Kubernetes 命名空间条件、四个 Kubernetes 服务条件和三个 Kubernetes Ingress 条件的成员资格条件无效。原因是,您将两种不同成员类型(Kubernetes 服务和 Kubernetes Ingress)的资源条件混合用在同一成员资格条件中。

    但是,您可以使用基于单个成员类型的资源条件创建单独的成员资格条件,然后使用“或”运算符将两个成员资格条件连接在一起,如下所示:

    成员资格条件 1:

    一个 Kubernetes 集群条件 + 三个 Kubernetes 命名空间条件 + 四个 Kubernetes 服务条件

    成员资格条件 2:

    一个 Kubernetes 集群条件 + 三个 Kubernetes 命名空间条件 + 三个 Kubernetes Ingress 条件

验证 7

在单个成员资格条件中,基于 NSX 成员类型的条件不能与基于 Kubernetes 成员类型的条件混合使用。但是,您可以创建一个组,其中一个成员资格条件仅基于 NSX 成员类型,另一个成员资格条件仅基于 Kubernetes 成员类型,然后使用“或”运算符将这两个成员资格条件连接在一起。

示例:

有效 无效

成员资格条件 1:

虚拟机条件

成员资格条件 2:

Kubernetes 集群条件 + Kubernetes Gateway 条件

成员资格条件:

NSX 分段条件 + 分段端口条件

Kubernetes 集群条件 + Kubernetes Gateway 条件