可用区级网络端点组概览

网络端点组 (NEG) 是一个配置对象,用于指定一组后端端点或服务。可用区级 NEG 是可用区级资源,表示单个子网内 Google Cloud 资源 IP 地址的集合或 IP 地址和端口组合的集合。

NEG 允许您创建表示软件服务(而非整个虚拟机)的 IP 地址和端口的逻辑分组,因此 NEG 很有用。由 Apache MesosCloud Foundry 等其他编排程序管理的微服务(在 Google Cloud 虚拟机中运行)的 IP 地址可以是端点。

如需了解其他 NEG 类型,请参阅:

可用区级 NEG 有两种类型,具体取决于构成 NEG 的网络端点类型。这两种类型的可用区级 NEG 支持不同的用例和负载均衡器类型。

具有 GCE_VM_IP 端点的 NEG

直通式网络负载均衡器支持具有 GCE_VM_IP 端点的可用区级 NEG。这些可用区级 NEG 包含一个或多个使用 Compute Engine 虚拟机网络接口的主要内部 IPv4 地址表示的端点。

虽然 Google Cloud 使用 IP 地址来表示端点,但 GCE_VM_IP 端点的目的是标识网络接口本身。网络接口必须位于 NEG 的子网中。

由于 GCE_VM_IP 端点标识网络接口,因此您不能使用 GCE_VM_IP 端点指定端口。

这些类型的端点只能用作内部直通式网络负载均衡器和外部直通式网络负载均衡器的后端服务中的后端。

具有 GCE_VM_IP_PORT 端点的 NEG

这些可用区级 NEG 包含以下一个或多个 IP 地址或 IP 地址和目标端口组合:

  • 虚拟机网络接口的主要内部 IPv4 地址
  • 虚拟机网络接口的主要内部 IPv4 地址以及目标端口号
  • 分配给虚拟机网络接口的别名 IP 地址范围中的内部 IPv4 地址
  • 分配给虚拟机网络接口的别名 IP 地址范围内的内部 IPv4 地址,以及一个目标端口号

包含 GCE_VM_IP_PORT 端点的网络接口必须位于 NEG 的子网中。如果在 GCE_VM_IP_PORT 端点中省略端口号,则 Google Cloud 会为该端点使用 NEG 的默认端口号。

由于这些可用区级 NEG 后端允许您指定 IP 地址和端口,因此您可以在虚拟机实例中运行的应用或容器之间精确分配流量 - 容器原生负载均衡。GKE 将 GCE_VM_IP_PORT 端点用于:

您可以创建自行管理的负载均衡器,该负载均衡器使用 GCE_VM_IP_PORT 端点由 GKE 管理的可用区级 NEG。如需了解详情,请参阅通过独立可用区级 NEG 实现容器原生负载均衡

应用负载均衡器和代理网络负载均衡器支持具有 GCE_VM_IP_PORT 端点的可用区级 NEG。

端点规范

创建 NEG 时,您需要选择可用区、网络和子网。所有端点 IP 地址都必须与可用区级 NEG 位于同一子网。

如果您选择的网络是自动模式 VPC 网络,则可以省略指定子网这一操作。但是,仍会有子网与可用区级 NEG 关联。如果您在创建可用区级 NEG 时指定了自动模式 VPC 网络,但未指定子网,则将在您为可用区级 NEG 选择的可用区所属的区域中自动创建所要使用的子网。

您创建的可用区级 NEG 的类型是在创建 NEG 时指定的(GCE_VM_IPGCE_VM_IP_PORT)。这决定了 NEG 支持的端点类型。

GCE_VM_IP_PORT 可用区级 NEG

对于 GCE_VM_IP_PORT 可用区级 NEG,必须满足以下条件:

  • 您必须指定每个虚拟机端点的名称。

  • 每个端点虚拟机必须与 NEG 位于同一可用区。

  • NEG 中的每个端点都必须是唯一的 IP 地址和端口的组合。一个唯一的端点 IP 地址和端口的组合可由多个 NEG 引用。

  • 每个端点虚拟机都必须拥有一个与 NEG 位于同一 VPC 网络中的网络接口。端点 IP 地址必须与在 NEG 中指定的同一子网相关联。

  • 每个 NEG 最多支持每个 NEG 的端点数上限。这些端点可以分布在多个唯一虚拟机或所有虚拟机中。

对于 GCE_VM_IP_PORT NEG,在添加端点时,您可以选择指定 IP 地址和端口,也可以选择仅指定 IP 地址,也可以两者都不指定:

  • 如果您指定了 IP 地址和端口,则 IP 地址可以是虚拟机在网络接口上的主要内部 IP 地址,也可以是在网络接口上的别名 IP 地址。端口由您自行选择。

  • 如果仅指定 IP 地址,则该 IP 地址可以是虚拟机在网络接口上的主要内部 IP 地址,也可以是在网络接口上的别名 IP 地址。使用的端口是 NEG 的默认端口。

  • 如果同时省略两者,则 Google Cloud 会选择虚拟机的主要内部 IP 地址,并使用 NEG 的默认端口。

GCE_VM_IP 可用区级 NEG

对于 GCE_VM_IP 可用区级 NEG,必须满足以下条件:

  • 您必须指定每个虚拟机端点的名称。

  • 每个端点虚拟机必须与 NEG 位于同一可用区。

  • GCE_VM_IP NEG 中的每个端点都必须是唯一的 IP 地址。一个唯一的端点 IP 地址可由多个 NEG 引用。

  • 每个 GCE_VM_IP NEG 始终与网络和子网关联。添加端点时,您可以选择是否指定 IP 地址。如果指定了 IP 地址,则必须将其设置为与 NEG 的子网匹配的所挂接虚拟机实例的主要内部 IP 地址。多 NIC 虚拟机实例的任何网络接口的主要内部 IP 地址可以添加到 NEG 中,只要该地址与 NEG 子网匹配即可。

  • 每个 NEG 最多支持每个 NEG 的端点数上限。端点必须分布在所有唯一虚拟机中。多个端点不能位于一个虚拟机上,因为一个虚拟机不能有多个与同一子网关联的网络接口。

使用可用区级 NEG 实现负载均衡

可用区级 NEG 可用作负载均衡器中后端服务的后端。在将可用区级 NEG 用作后端服务的后端时,该后端服务中的所有其他后端也必须是同一类型的可用区级 NEG(全部 GCE_VM_IPGCE_VM_IP_PORT)。您不能将实例组和可用区级 NEG 用作同一后端服务的后端。

您可以将同一网络端点添加到多个可用区级 NEG。您可以将同一可用区级 NEG 用作多个后端服务的后端。

GCE_VM_IP_PORT 可用区级 NEG 可以使用 RATE 均衡模式CONNECTION 均衡模式,具体取决于后端服务协议。支持的负载均衡器需要定义目标容量

GCE_VM_IP 可用区级 NEG 必须使用 CONNECTION 均衡模式。此外,内部直通式网络负载均衡器和外部直通式网络负载均衡器不支持目标容量设置。

直通式网络负载均衡器

具有 GCE_VM_IP 端点的可用区级 NEG 只能用作内部直通式网络负载均衡器和外部直通式网络负载均衡器的后端服务的后端。

如需了解具有 GCE_VM_IP 端点的 NEG 的主要使用场景,请参阅以下部分。

灵活的端点分组

与实例组一样,您可以将同一 NEG 用作多个直通式网络负载均衡器的后端。与实例组不同的是,一个 NEG 端点可以是多个 NEG 的成员,并且每个 NEG 都可用作一个或多个直通式网络负载均衡器的后端。与实例组相比,您不会受到虚拟机实例只能属于单个实例组这一限制。

下图展示了具有共享虚拟机的内部直通式网络负载均衡器架构示例。

具有重叠 `GCE_VM_IP` 可用区级 NEG 的内部直通式网络负载均衡器。
具有重叠可用区级 NEG 的内部直通式网络负载均衡器(点击可放大)。

使用非 nic0 接口作为后端端点

具有 GCE_VM_IP 端点的可用区级 NEG 允许负载均衡到虚拟机的非 nic0 网络接口。在与通常预留 nic0 进行管理操作的第三方设备虚拟机集成时,这非常有用。使用 GCE_VM_IP NEG 时,同一虚拟机的任何非 nic0 网络接口都可以连接到直通式网络负载均衡器的 NEG 后端。

GKE 子集

GKE 使用 GCE_VM_IP 可用区级 NEG 和子集,以下列方式提高内部直通式网络负载均衡器的可伸缩性:

在不建立子集的情况下,GKE 会为每个可用区创建一个非代管式实例组,其中包含该可用区内所有节点池的集群节点。这些可用区级实例组用作一个或多个内部 LoadBalancer 服务(以及不使用 NEG 本身的外部 Ingress)的后端。

通过建立子集,GKE 会为每个内部 LoadBalancer 服务创建 GCE_VM_IP 个可用区级 NEG。此端点可以是多个可用区级 NEG 的成员。与实例组不同,Google Cloud 可以将负载均衡到包含相同端点的多个可用区级 NEG 中。

通过建立子集,可以更有效地将流量分配到包含超过 250 个节点的集群中的内部 LoadBalancer 服务。例如,300 节点 GKE 集群可能在一个 NEG 中具有 25 个节点的内部 LoadBalancer 服务,因为该服务具有 25 个服务 Pod。并非所有 300 个节点都需要添加到此服务的实例组后端。

请注意,NEG、转发规则、后端服务和其他 Google Cloud 网络资源的配额仍然适用。

如需了解详情,请参阅使用内部直通式网络负载均衡器子集

应用负载均衡器和代理网络负载均衡器

下图显示了具有 GCE_VM_IP_PORT 端点的可用区级 NEG 作为后端的负载均衡器的配置组件:

负载平衡中的可用区级网络端点组。
负载平衡中的地区网络端点组(点击可放大)

如需详细了解这些负载均衡器的架构要求,请参阅:

GCE_VM_IP_PORT NEG 可用区级 NEG 的主要应用场景是容器原生负载均衡,因此您可以将流量直接分配到虚拟机上运行的容器,例如分配到 GKE 集群中的 Pod IP 地址。

利用容器原生负载均衡,负载均衡器能够直接定位 Pod,并在 Pod 级层(而不是虚拟机级层)做出负载分配决策。

以下示例演示了负载均衡器如何在虚拟机上的容器中运行的微服务之间分配流量。虚拟机配置为使用其子网中的别名 IP 地址范围,并且这些范围是该容器使用的地址。

使用容器对可用区级网络端点组进行负载平衡。
使用容器对地区网络端点组进行负载平衡(点击可放大)

您可以通过两种方法配置容器原生负载均衡:使用由 GKE Ingress 管理的 NEG,或使用独立 NEG。

  • 将 Kubernetes Ingress 与 NEG 搭配使用(推荐)

    将 NEG 与 Ingress 搭配使用时,Ingress 控制器会协助创建 HTTP(S) 负载均衡器的所有方面。这包括创建虚拟 IP 地址、转发规则、健康检查、防火墙规则等等。如需了解如何对此进行配置,请参阅通过 Ingress 配置容器原生负载均衡

    建议借助 Ingress 来使用 NEG 进行容器原生负载均衡,因为 Ingress 的许多功能都可简化 NEG 的管理。或者,您也可以手动创建代理负载均衡器,但仍让 GKE 管理 NEG 端点成员资格,如下一个点(独立 NEG)中所述。

    如需了解如何通过 Ingress 设置负载均衡器,请参阅通过 Ingress 配置容器原生负载均衡

  • 独立 NEG

    独立 NEG 提供了一种方法供 GKE 集群创建使用 GCE_VM_IP_PORT 端点表示 Pod IP 地址和容器端口的可用区级 NEG,同时可让您灵活地配置 GKE 之外的负载均衡器组件。

    如需查看将独立可用区级 NEG 与 GKE 搭配使用的示例,请参阅:

限制

  • 不能将可用区级 NEG 用于旧版网络。
  • 将 NEG 用作后端的后端服务不能同时将实例组用作后端。

GCE_VM_IP 可用区级 NEG 的限制:

  • 只有内部直通式网络负载均衡器和外部直通式网络负载均衡器支持具有 GCE_VM_IP 端点的可用区级 NEG。
  • GCE_VM_IP 可用区级 NEG 不支持 default-port 属性

配额

  • 如需了解 NEG 配额(例如每个项目的 NEG、每个后端服务的 NEG 和每个 NEG 的端点),请参阅负载均衡配额页面

后续步骤