使用具有 vDS 网络连接的 vSphere with Tanzu 时,HAProxy 为访问 Tanzu Kubernetes 控制平面的开发人员以及类型为“负载均衡器”的 Kubernetes 服务提供负载均衡。查看可以为 HAProxy 负载均衡器实施的拓扑。

主管集群 上的工作负载网络

要配置具有 vSphere 网络堆栈的 主管集群,必须将集群中的所有主机都连接到 vSphere Distributed Switch。根据为 主管集群 工作负载网络实施的拓扑,您将创建一个或多个分布式端口组。可以将端口组指定为 vSphere 命名空间 的工作负载网络。

将主机添加到 主管集群 之前,必须先将其添加到属于该集群的所有 vSphere Distributed Switch。

工作负载网络可提供与 Tanzu Kubernetes 集群节点和 主管集群 控制平面虚拟机的连接。提供与 Kubernetes 控制平面虚拟机的连接的工作负载网络称为“主工作负载网络”。每个 主管集群 都必须有一个主工作负载网络。您必须将其中一个分布式端口组指定为 主管集群 的主工作负载网络。
注: 工作负载网络只能在启用 主管集群 时添加,以后无法添加。

主管集群 上的 Kubernetes 控制平面虚拟机使用分配给主工作负载网络的 IP 地址范围中的三个 IP 地址。Tanzu Kubernetes 集群的每个节点都会被分配一个单独的 IP 地址,从配置了 Tanzu Kubernetes 集群运行所在命名空间的工作负载网络的地址范围中进行分配。

IP 范围的分配

计划具有 HAProxy 负载均衡器的 主管集群 的网络拓扑时,请计划使用两种类型的 IP 范围:
  • 为 HAProxy 分配虚拟 IP 的范围。为 HAProxy 的虚拟服务器配置的 IP 范围由负载均衡器设备预留。例如,如果虚拟 IP 范围为 192.168.1.0/24,则该范围内的所有主机都不能用于除虚拟 IP 流量之外的其他流量。
    注: 您不得在 HAProxy 虚拟 IP 范围内配置网关,因为到该网关的所有路由都将失败。
  • 主管集群Tanzu Kubernetes 集群节点的 IP 范围。主管集群 中的每个 Kubernetes 控制平面虚拟机分配一个 IP 地址,总共三个 IP 地址。Tanzu Kubernetes 集群的每个节点也分配一个单独的 IP。您必须为 主管集群 上配置到命名空间的每个工作负载网络分配一个唯一的 IP 范围。

包含一个 /24 网络的示例配置:

  • 网络:192.168.120.0/24
  • HAProxy VIP:192.168.120.128/25
  • HAProxy 工作负载接口的 1 个 IP 地址:192.168.120.5

根据前 128 个地址中可用的 IP,可以为 主管集群 上的工作负载网络定义 IP 范围,例如:

  • 192.168.120.31-192.168.120.40 用于主工作负载网络
  • 192.168.120.51-192.168.120.60 用于其他工作负载网络
注: 为工作负载网络定义的范围不得与 HAProxy VIP 范围重叠。

HAProxy 网络拓扑

部署 HAProxy 有两个网络配置选项:默认前端。默认网络有 2 个网卡:一个用于管理网络,另一个用于工作负载网络。前端网络有 3 个网卡,分别用于管理网络、工作负载网络和客户端的前端网络。下表列出并介绍了每个网络的特性。

对于生产安装,建议使用 前端网络配置部署 HAProxy 负载均衡器。如果使用 默认配置部署 HAProxy 负载均衡器,建议为工作负载网络分配大小为 /24 的 IP 地址块。对于这两个配置选项,都不建议使用 DHCP。
网络 特性
管理
主管集群使用管理网络连接到 HAProxy 负载均衡器并制定计划。
  • HAProxy 数据平面 API 端点绑定到连接到管理网络的网络接口。
  • 分配给 HAProxy 控制平面虚拟机的管理 IP 地址必须是管理网络上的静态 IP,以便主管集群可以可靠地连接到负载均衡器 API。
  • HAProxy 虚拟机的默认网关应位于此网络。
  • 应通过此网络执行 DNS 查询。
工作负载
HAProxy 控制平面虚拟机使用工作负载网络访问主管集群和 Tanzu Kubernetes 集群节点上的服务。
  • HAProxy 控制平面虚拟机通过此网络将流量转发到主管集群和 Tanzu Kubernetes 集群节点。
  • 如果 HAProxy 控制平面虚拟机在“默认”模式(两个网卡)下部署,则工作负载网络必须提供用于访问负载均衡器服务的逻辑网络。
  • 默认配置中,负载均衡器虚拟 IP 和 Kubernetes 集群节点 IP 将来自此网络。它们将在网络中定义为单独的非重叠范围。
注: 工作负载网络必须与管理网络位于不同的子网上。请参阅 系统要求
前端(可选)

访问集群工作负载的外部客户端(如用户或应用程序)通过前端网络使用虚拟 IP 地址访问后端负载均衡服务。

  • 仅当 HAProxy 控制平面虚拟机部署了三个网卡时,才会使用前端网络。
  • 建议用于生产安装。
  • 前端网络是提供虚拟 IP 地址 (VIP) 的位置。HAProxy 将均衡流量并将其转发到相应的后端。

下图展示了使用前端网络拓扑的 HAProxy 部署。该图指明了安装和配置过程中配置字段应所在的位置。

""

具有一个工作负载网络且 HAProxy 具有两个虚拟网卡的 主管集群 拓扑

在此拓扑中,会针对以下组件配置具有一个工作负载网络的 主管集群

  • Kubernetes 控制平面虚拟机
  • Tanzu Kubernetes 集群的节点。
  • 外部服务和 DevOps 用户连接的 HAProxy 虚拟 IP 范围。在此配置中,HAProxy 部署有两个虚拟网卡(默认配置),一个虚拟网卡连接到管理网络,另一个虚拟网卡连接到主工作负载网络。您必须计划在主工作负载网络中的一个单独子网上分配虚拟 IP。
您指定一个端口组作为 主管集群 的主工作负载网络,然后使用相同的端口组作为 vSphere 命名空间 的工作负载网络。 主管集群Tanzu Kubernetes 集群、HAProxy、DevOps 用户和外部服务均连接到设置为主工作负载网络的同一个分布式端口组。
图 1. 一个网络支持的 主管集群

一个网络支持的主管集群
DevOps 用户或外部应用程序的流量路径如下所示:
  1. DevOps 用户或外部服务将流量发送到分布式端口组的工作负载网络子网上的虚拟 IP。
  2. HAProxy 对传输至 Tanzu Kubernetes 节点 IP 或控制平面虚拟机 IP 的虚拟 IP 流量进行负载均衡。HAProxy 会声明虚拟 IP 地址,以便它能够对来到该 IP 的流量进行负载均衡。
  3. 控制平面虚拟机或 Tanzu Kubernetes 集群节点分别将流量传送到在 主管集群Tanzu Kubernetes 集群内运行的目标 pod。

具有一个隔离工作负载网络且 HAProxy 具有两个虚拟网卡的 主管集群 拓扑

在此拓扑中,可以将网络配置为以下组件:
  • Kubernetes 控制平面虚拟机。用于处理 Kubernetes 控制平面虚拟机的流量的主工作负载网络。
  • Tanzu Kubernetes 集群节点。分配给主管集群 上的所有命名空间的工作负载网络。此网络连接 Tanzu Kubernetes 集群节点。
  • HAProxy 虚拟 IP。在此配置中,HAProxy 虚拟机部署有两个虚拟网卡(默认配置)。可以将 HAProxy 虚拟机连接到主工作负载网络或用于命名空间的工作负载网络。还可以将 HAProxy 连接到 vSphere 中已存在且可路由到主工作负载网络和工作负载网络的虚拟机网络。
主管集群 连接到支持主工作负载网络的分布式端口组, Tanzu Kubernetes 集群连接到支持工作负载网络的分布式端口组。这两个端口组必须可通过第 3 层进行路由。您可以通过 VLAN 实现第 2 层隔离。可以通过 IP 防火墙和网关进行第 3 层流量筛选。
图 2. 具有隔离工作负载网络的 主管集群

具有隔离工作负载网络的主管集群
DevOps 用户或外部服务的流量路径如下所示:
  1. DevOps 用户或外部服务将流量发送到虚拟 IP。流量路由到连接 HAProxy 的网络。
  2. HAProxy 对传输至 Tanzu Kubernetes 节点 IP 或控制平面虚拟机的虚拟 IP 流量进行负载均衡。HAProxy 会声明虚拟 IP 地址,以便它能够对来到该 IP 的流量进行负载均衡。
  3. 控制平面虚拟机或 Tanzu Kubernetes 集群节点将流量传送到在 Tanzu Kubernetes 集群内运行的目标 pod。

具有多个工作负载网络且 HAProxy 具有两个虚拟网卡的 主管集群 拓扑

在此拓扑中,您可以将一个端口组配置为充当主工作负载网络,并将一个专用端口组配置为充当每个命名空间的工作负载网络。HAProxy 部署有两个虚拟网卡(默认配置),您可以将其连接到主工作负载网络,也可以连接到任一工作负载网络。还可以使用可路由到主工作负载网络和工作负载网络的现有虚拟机网络。

在此拓扑中,DevOps 用户和外部服务的流量路径与隔离工作负载网络拓扑相同。
图 3. 多个隔离工作负载网络支持的 主管集群

多个隔离工作负载网络支持的主管集群

具有多个工作负载网络且 HAProxy 具有三个虚拟网卡的 主管集群 拓扑

在此配置中,您可以部署具有三个虚拟网卡的 HAProxy 虚拟机,从而将 HAProxy 连接到前端网络。DevOps 用户和外部服务可以通过前端网络中的虚拟 IP 访问 HAProxy。建议在生产环境中部署具有三个虚拟网卡的 HAProxy。
图 4. 部署有三个虚拟网卡的 HAProxy

部署有三个虚拟网卡的 HAProxy

在可能的拓扑之间进行选择

在每个可能的拓扑之间进行选择之前,请先评估环境的需求:

  1. 主管集群Tanzu Kubernetes 集群之间是否需要第 2 层隔离?
    1. 否:最简单的拓扑,其中一个工作负载网络为所有组件提供服务。
    2. 是:隔离的工作负载网络拓扑,其中具有单独的主工作负载网络和工作负载网络。
  2. Tanzu Kubernetes 集群之间是否需要进一步的第 2 层隔离?
    1. 否:隔离的工作负载网络拓扑,其中具有单独的主工作负载网络和工作负载网络。
    2. 是:多个工作负载网络拓扑,其中每个命名空间有一个单独的工作负载网络,以及一个专用的主工作负载网络。
  3. 是否要防止 DevOps 用户和外部服务直接路由到 Kubernetes 控制平面虚拟机和 Tanzu Kubernetes 集群节点?
    1. 否:两个网卡 HAProxy 配置。
    2. 是:三个网卡 HAProxy 配置。建议对生产环境使用此配置