启用手动负载平衡模式

Anthos clusters on VMware (GKE On-Prem) 集群可以在以下三种负载平衡模式之一下运行:集成式、捆绑式或手动模式。在集成模式下,VMware 上的 Anthos 集群使用 F5 BIG-IP 负载平衡器。在捆绑式模式下,Anthos clusters on VMware 提供和管理负载平衡器。您无需获得负载平衡器许可,并且只需执行最基本的设置步骤。 在手动模式下,Anthos clusters on VMware 使用您选择的其他负载平衡器。手动负载平衡模式要求您进行比集成模式更多的配置。 本页面介绍在您选择使用手动负载平衡模式时需要执行的步骤。

Citrix 负载均衡器是一种示例负载均衡器,您可以将其用于手动负载均衡模式。

在本主题中,您要预留 IP 地址和 nodePort 值,供以后使用。您可以选择要用于负载平衡和集群节点的 IP 地址和 nodePort 值。但是,此时您不会对地址和 nodePort 值执行任何操作。稍后,当您准备好安装 Anthos clusters on VMware 时,需要使用地址和 nodePort 值来填充集群配置文件。在手动配置负载平衡器时,您还需要使用地址和 nodePort 值。

预留虚拟 IP 地址

无论您使用集成、捆绑式还是手动负载平衡模式,都必须预留一些虚拟 IP 地址 (VIP) 以用于负载平衡。这些 VIP 允许外部客户端访问您的 Kubernetes API 服务器、入站服务和插件服务。如需详细了解如何预留 VIP,请参阅预留虚拟 IP 地址

预留节点 IP 地址

使用手动负载平衡模式时,您无法使用 DHCP。您必须为集群节点指定静态 IP 地址。您需要为管理员集群中的节点预留足够的地址,并为您要创建的所有用户集群中的节点预留足够的地址。如需详细了解要预留的节点 IP 地址数量,请参阅配置静态 IP

预留 nodePort

在 VMware 上的 Anthos 集群中,Kubernetes API 服务器、Ingress 服务和插件服务是作为 NodePort 类型的 Kubernetes Service 实现的。使用手动负载平衡模式时,您必须为这些服务选择自己的 nodePort 值。请选择 30000 - 32767 范围内的值。选择 nodePort 值后,请将其预留以供稍后在修改集群配置文件时使用。

选择并保留以下 nodePort 值。

  • 对于您为 Kubernetes API 服务器预留的每个 VIP,请预留一个 nodePort 值。

  • 对于您为集群入站服务预留的每个 VIP,请预留两个 nodePort 值:一个用于 HTTP 流量,一个用于 HTTPS 流量。这仅适用于用户集群。

  • 对于您为集群插件服务预留的每个 VIP,请预留一个 nodePort 值。这仅适用于管理员集群。

例如,假设您打算使用两个用户集群,并且打算使用插件。您需要选择并预留以下 nodePort 值:

  • 为管理员集群中的 Kubernetes API 服务器预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为 Kubernetes API 服务器预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为进入入站服务的 HTTP 流量预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为进入入站服务的 HTTPS 流量预留 nodePort 值。

  • 为管理员集群中的插件服务预留一个 nodePort 值。

因此,在前面的示例中,您需要预留 8 个 nodePort 值。

修改 Anthos clusters on VMware 配置文件。

为以下每个集群准备一个配置文件:管理员集群用户集群

  • loadBalancer.kind 设置为 ManualLB

  • network.ipMode 设置为 static

  • network.ipBlockFilePath 设置为您的集群的静态 IP YAML 文件的路径。相关说明请参阅配置静态 IP。DHCP 不是手动负载平衡模式的选项。

  • 使用您为集群选择的 nodePort 值更新 loadBalancer.manualLB 字段。

以下示例显示了更新后的配置文件的一部分。

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879
    controlPlaneNodePort: 30562:
    addonsnodeport: 31405

配置负载平衡器

现在您已更新了配置文件,下面请登录负载平衡器的管理控制台并配置 VIP:

  • 管理员集群和用户集群的集群控制平面,TCP 端口 443
  • 管理员集群的插件管理器(如果使用),TCP 端口 8443
  • 用户集群 Ingress 控制器,TCP 端口 80
  • 用户集群 Ingress 控制器,TCP 端口 443

负载平衡示例

Service 有一个 ports 字段,它是 ServicePort 对象的数组。在 NodePort 类型的 Service 中,每个 ServicePort 对象都有一个 protocolportnodePorttargetPort。例如,下面是对应 ports 数组中有两个 ServicePort 对象的 Service 的清单的一部分:

...
kind: Service
...
spec:
  ...
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    nodePort: 32676
    targetPort: 8080
  - protocol: TCP
    port: 443
    nodePort: 32677
    targetPort: 443
...

假设上述 Service 代表您的某个用户集群的入站服务。另外,还假设您已做出以下选择:

  • 203.0.113.5 是您的用户集群的入站服务的 VIP。

  • 您的用户集群的节点地址为 192.168.0.10192.168.0.11192.168.0.12

配置好负载平衡器后,流量路由如下:

  • 客户端在 TCP 端口 80 上向 203.0.113.5 发送请求。负载平衡器选择用户集群节点。对于此示例,假设节点地址为 192.168.0.11。负载平衡器将请求转发到 TCP 端口 32676 上的 192.168.0.11。节点上的 iptables 规则将请求转发到 TCP 端口 8080 上的相应 pod。

  • 客户端在 TCP 端口 443 上向 203.0.113.5 发送请求。负载平衡器选择用户集群节点。对于此示例,假设节点地址为 192.168.0.10。负载平衡器将请求转发到 TCP 端口 32677 上的 192.168.0.10。节点上的 iptables 规则将请求转发到 TCP 端口 443 上的相应 Pod。

获取对手动负载平衡的支持

Google 不提供对使用手动负载平衡模式配置的负载平衡器的支持。如果您遇到与负载平衡器相关的问题,请与负载平衡器的供应商联系。

后续步骤

问题排查

如需了解详情,请参阅问题排查